我只是想知道它有什么应用程序。我相信1.9的前缀?会返回该字符的字符串版本。前缀的含义是什么? Ruby 1.9中的运算符
?a #=> "a"
?\t #=> "\t"
这只是'a'或'\ t'的缩写吗?
我只是想知道它有什么应用程序。我相信1.9的前缀?会返回该字符的字符串版本。前缀的含义是什么? Ruby 1.9中的运算符
?a #=> "a"
?\t #=> "\t"
这只是'a'或'\ t'的缩写吗?
这主要是为了向后兼容。在1.9之前的版本中,?
评估为Fixnum
,对应于所讨论字符的ASCII值。索引到String
也返回Fixnum
。
所以,如果你想检查,例如,如果一个字符串的第三个字符是字母“A”,你会做
s[2] == ?a
在Ruby 1.9中,字符串不再被看作一个数组的fixnums而是作为字符的迭代器(实际上是单字符字符串)。结果,上面的代码将不再起作用:s[2]
将是一个字符串,?a
将是一个数字,而这两个将永远不会相等。
因此,?
也被更改为一个单字符字符串,以便上面的代码继续工作。
你是对的,你得到字符的字符串值。它以前用于获取字符的ASCII值。
红宝石1.8和早期
?a
将返回 'A' 字符的ASCII版本。
在1.9它只返回字符串(就像你已经假定)