也许有人知道以下行为的技术答案:
s = "hello world!"
s == s.upcase
# =>false, because "hello world!" != "HELLO WORLD!"
s == s.upcase!
#=>true, because s is changed before comparison?
马蒂亚斯
最佳答案
这会发生在每一种语言中,这样想吧
AreEqual(s, s.upcase())
vs.
AreEqual(s, s.upcase!())
在这两种情况下,upcase(!)函数必须在传递给AreEqual之前被调用,并且在
upcase!()
情况下,它实际上更改了s的值。upcase()
返回一个带有大写版本s的新字符串。