2011-08-08 57 views

回答

9

这主要是为了向后兼容。在1.9之前的版本中,?评估为Fixnum,对应于所讨论字符的ASCII值。索引到String返回Fixnum

所以,如果你想检查,例如,如果一个字符串的第三个字符是字母“A”,你会做

s[2] == ?a 

在Ruby 1.9中,字符串不再被看作一个数组的fixnums而是作为字符的迭代器(实际上是单字符字符串)。结果,上面的代码将不再起作用:s[2]将是一个字符串,?a将是一个数字,而这两个将永远不会相等。

因此,?也被更改为一个单字符字符串,以便上面的代码继续工作。

1

你是对的,你得到字符的字符串值。它以前用于获取字符的ASCII值。

红宝石1.8
2

和早期

?a 

将返回 'A' 字符的ASCII版本。

在1.9它只返回字符串(就像你已经假定)

相关问题