什么是前缀点?Ruby 1.9中的运算符

Uri*_*Uri 1 ruby operators

我只是想知道它有什么应用程序.我相信1.9的前缀?将返回该字符的字符串版本.

?a   #=> "a"
?\t  #=> "\t"
Run Code Online (Sandbox Code Playgroud)

这只是'a'或'\ t'的简写吗?

Jör*_*tag 9

它主要用于向后兼容.在1.9之前的版本中,?评估为Fixnum对应于相关字符的ASCII值.索引成一个String 返回了一个Fixnum.

所以,如果你想检查,例如,字符串的第三个字符是否是字母'a',你会这样做

s[2] == ?a
Run Code Online (Sandbox Code Playgroud)

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

因此,?也改为评估为单字符串,以便上面的代码继续工作.