当我应用该upcase!
方法时,我得到:
a="hello"
a.upcase!
a # Shows "HELLO"
但是在另一种情况下:
b="hello"
b[0].upcase!
b[0] # Shows h
b # Shows hello
我不明白为什么upcase!
应用到b[0]
没有效果。
当您在字符串中选择单个字符时,您没有引用该特定字符,而是在调用访问器/更改器函数来执行评估:
2.0.0-p643 :001 > hello = "ruby"
=> "ruby"
2.0.0-p643 :002 > hello[0] = "R"
=> "R"
2.0.0-p643 :003 > hello
=> "Ruby"
在运行危险方法的情况下,访问器会请求该值,然后对其进行操作并更新新变量,但是由于字符与字符串之间不再存在连接,因此不会更新引用。
2.0.0-p643 :004 > hello = "ruby"
=> "ruby"
2.0.0-p643 :005 > hello[0].upcase!
=> "R"
2.0.0-p643 :006 > hello
=> "ruby"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句