什么是前缀点? 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值。