【发布时间】:2011-08-08 12:58:08
【问题描述】:
我只是想知道它有哪些应用程序。我相信 1.9 的前缀?将返回该字符的字符串版本。
?a #=> "a"
?\t #=> "\t"
这只是 'a' 或 '\t' 的简写吗?
【问题讨论】:
我只是想知道它有哪些应用程序。我相信 1.9 的前缀?将返回该字符的字符串版本。
?a #=> "a"
?\t #=> "\t"
这只是 'a' 或 '\t' 的简写吗?
【问题讨论】:
主要是为了向后兼容。在 1.9 之前的版本中,? 评估为与相关字符的 ASCII 值相对应的 Fixnum。对String 的索引也返回了Fixnum。
因此,例如,如果您想检查字符串的第三个字符是否是字母“a”,您会这样做
s[2] == ?a
在 Ruby 1.9 中,字符串不再被视为一个固定数字数组,而是一个字符迭代器(实际上是单字符字符串)。结果,上面的代码将不再起作用:s[2] 将是一个字符串,?a 将是一个数字,而这两者永远不会相等。
因此,? 也被更改为评估为单字符字符串,以便上述代码继续工作。
【讨论】:
在 ruby 1.8 及更早版本中
?a
将返回 'a' 字符的 ASCII 版本。
在 1.9 中它只返回字符串(就像你假设的那样)
【讨论】:
你是对的,你得到了字符的字符串值。以前是用来获取字符的ASCII值的。
【讨论】: