【问题标题】:What's the Point of the prefix ? operator in Ruby 1.9前缀的意义是什么? Ruby 1.9 中的运算符
【发布时间】:2011-08-08 12:58:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby operators


    【解决方案1】:

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

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

    s[2] == ?a
    

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

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

    【讨论】:

      【解决方案2】:

      在 ruby​​ 1.8 及更早版本中

      ?a 
      

      将返回 'a' 字符的 ASCII 版本。

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2011-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-24
          • 2021-05-29
          • 1970-01-01
          • 2021-12-04
          • 2011-03-02
          相关资源
          最近更新 更多