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

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

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

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

它主要是为了向后兼容。 在1.9之前的版本中, ? 评估为与相关字符的ASCII值对应的Fixnum 。 索引到String 返回了Fixnum

因此,如果你想检查,例如,字符串的第三个字符是否是字母“a”,那么你会这样做

 s[2] == ?a 

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

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

在ruby 1.8及更早版本中

 ?a 

将返回’a’char的ASCII版本。

在1.9中它只返回字符串(就像你假设的那样)

你是对的,你得到了字符的字符串值。 它以前用于获取字符的ASCII值。