为什么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问题 。