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

时间:2011-08-08 12:58:08

标签: ruby operators

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

?a   #=> "a"
?\t  #=> "\t"

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

3 个答案:

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