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

时间:2010-12-06 03:56:28

标签: ruby ruby-1.9

当您在ruby 1.8.7 中执行?a时,您曾获得'a'的ASCII字符

in ruby​​ 1.9.2 此代码返回

> ?a
> "a"

这有什么意义,1.9.2中的输出是什么意思

1 个答案:

答案 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