当您在ruby 1.8.7 中执行?a
时,您曾获得'a'的ASCII字符
in ruby 1.9.2 此代码返回
> ?a
> "a"
这有什么意义,1.9.2中的输出是什么意思
答案 0 :(得分:5)
在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
如需更多答案,请参阅this stackoverflow question。