放'A'.upcase!返回零。这有点令人困惑,特别是因为“Ab”返回“AB”,而不是“B”。这是错误还是语言怪癖?
编辑 所以我看到了文档,但它似乎仍然违反直觉。这在实际使用场景中什么时候有意义?我可以看到它造成的问题比帮助更多
编辑Tihom 的答案似乎是最好的;他提到的帖子和评论让我明白,Matz 和 Ruby 开发团队的动机很可能是数据类型完整性的一致性(字符串应该是不可变的),而不是英语口语中链式方法的敏感性.
看来大写了!对于单个字符来说,这有点奇怪,没有实际用途,而且有点病态的情况,对于说英语的人来说确实是违反直觉的。Tihom 指出,Ruby 优先考虑字符串不变性的其他实例更合理:
一个更直观的例子是 gsub!,如果没有进行替换,它会返回 nil:
"abc".gsub!('d','') #=> nil