我只是想知道它有什么应用程序。我相信1.9的前缀?将返回该字符的字符串版本。
?a #=> "a"
?\t #=> "\t"
这只是'a'或'\ t'的简写吗?
答案 0 :(得分:9)
主要是为了向后兼容。在1.9之前的版本中,?
评估为对应于相关字符的ASCII值的Fixnum
。索引到String
也返回Fixnum
。
所以,如果你想检查一下,例如,字符串的第三个字符是否是字母“a”,那么
s[2] == ?a
在Ruby 1.9中,字符串不再被视为fixnums数组,而是作为字符的迭代器(实际上是单字符字符串)。因此,上述代码将不再有效:s[2]
将是一个字符串,?a
将是一个数字,而这两个将永远不会相等。
因此,?
也被更改为评估为单字符字符串,以便上述代码继续有效。
答案 1 :(得分:2)
在ruby 1.8及更早版本中
?a
将返回'a'char的ASCII版本。
在1.9中的它只返回字符串(就像你假设的那样)
答案 2 :(得分:1)
你是对的,你得到了字符的字符串值。它以前用于获取字符的ASCII值。