我只是想知道它有什么应用程序.我相信1.9的前缀?将返回该字符的字符串版本.
?a #=> "a"
?\t #=> "\t"
Run Code Online (Sandbox Code Playgroud)
这只是'a'或'\ t'的简写吗?
它主要用于向后兼容.在1.9之前的版本中,?评估为Fixnum对应于相关字符的ASCII值.索引成一个String 也返回了一个Fixnum.
所以,如果你想检查,例如,字符串的第三个字符是否是字母'a',你会这样做
s[2] == ?a
Run Code Online (Sandbox Code Playgroud)
在Ruby 1.9中,字符串不再被视为fixnums数组,而是作为字符的迭代器(实际上是单字符字符串).结果,上面的代码将不再起作用:s[2]将是一个字符串,?a将是一个数字,而这两个永远不会相等.
因此,?也改为评估为单字符串,以便上面的代码继续工作.