【发布时间】:2019-06-10 18:24:37
【问题描述】:
我今天遇到了一个代码 sn-p,它使用 ? 运算符来引用下一个字符。我不知道这个方法的文档在哪里,也真的不知道它实际上在做什么。
我查看了 ruby 文档,但没有找到。
?1
=> "1"
?1"23abc"
=> "123abc"
【问题讨论】:
标签: ruby
我今天遇到了一个代码 sn-p,它使用 ? 运算符来引用下一个字符。我不知道这个方法的文档在哪里,也真的不知道它实际上在做什么。
我查看了 ruby 文档,但没有找到。
?1
=> "1"
?1"23abc"
=> "123abc"
【问题讨论】:
标签: ruby
? 在这种情况下不是一种方法,而是一种可解析的语法。 ? 在此上下文中是字符文字
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 :001 > ?1 => 49 很高兴知道字符串连接,这是我第一次听说。