【问题标题】:What does the ruby ? method do? [duplicate]红宝石有什么用?方法呢? [复制]
【发布时间】:2019-06-10 18:24:37
【问题描述】:

我今天遇到了一个代码 sn-p,它使用 ? 运算符来引用下一个字符。我不知道这个方法的文档在哪里,也真的不知道它实际上在做什么。

我查看了 ruby​​ 文档,但没有找到。

?1

=> "1"

?1"23abc"

=> "123abc"

【问题讨论】:

    标签: ruby


    【解决方案1】:

    ? 在这种情况下不是一种方法,而是一种可解析的语法。 ? 在此上下文中是字符文字

    Docs摘录:

    还有一种字符文字表示法来表示单个字符串,其语法是问号 (?) 后跟单个字符或转义序列,对应于脚本编码中的单个代码点:

    ?a       #=> "a"
    ?abc     #=> SyntaxError
    ?\n      #=> "\n"
    ?\s      #=> " "
    ?\\      #=> "\\"
    ?\u{41}  #=> "A"
    ?\C-a    #=> "\x01"
    ?\M-a    #=> "\xE1"
    ?\M-\C-a #=> "\x81"
    ?\C-\M-a #=> "\x81", same as above
    ?あ      #=> "あ"
    

    您还发现了解析器的另一个有趣的小机制,即 2 个字符串可以通过简单地并排放置(有或没有空格)来连接在一起。例如

    "1" "234" 
    #=> "1234"
    "1""234"
    #=> "1234"
    

    【讨论】:

    • 我实际上发现在 ruby​​ 1.8 及之前的版本中,这会返回 Ascii 编号。 ruby :001 > ?1 => 49 很高兴知道字符串连接,这是我第一次听说。
    • @AndrewMerritt 我真诚地希望您没有使用 1.8 或实际上低于 2.3 的任何版本(EOL 2019-03-31),但从技术上讲是的
    • 哈哈,不,我在我的项目中使用的是 2.5.x。刚刚发现这是一个有趣的花絮。显然我错过了我搜索的上一个问题,这也显示了相同的答案。
    猜你喜欢
    • 2011-09-06
    • 2011-04-26
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    相关资源
    最近更新 更多