为什么ruby 1.9.2中的?a命令不返回ASCII码

当你做了?a在ruby 1.8.7中你曾经得到’a’的ASCII字符

在ruby 1.9.2中,此代码返回

 > ?a > "a" 

这有什么意义,1.9.2中的输出意味着什么

在Ruby 1.8中, "foo"[0]返回索引0处的字符代码而不是索引0处的字符串。作为支持具有各种编码(而不是字节数组)的国际字符串的一部分,Ruby 1.9改变了这种行为返回指定索引处的单字符字符串。

随着这一变化, ?a被改为评估为单字符串。 据推测,这样的库就像这样的代码……

 if my_string[0] == ?a 

……会继续工作。 如果要为字符串的第一个字符使用字符代码值,请使用String#ord

 puts "It's a boy!" if my_string[0].ord == 89 

有关更多答案,请参阅此stackoverflow问题 。