单字母字符串用“?”表示

时间:2019-01-22 11:48:00

标签: ruby

我在控制台中观察到了这一点,并在irb中尝试过相同的操作,

> ?#'a'
 => "#a" 

> ?#
 => "#" 

> ??
 => "?" 

> ?..class
 => String

> self.method('?')
# NameError (undefined method `?' for class `#<Class:#<Object:0x08ce9188>>')

以上仅适用于单个字符,而不适用于以下情况

> ?1
 => "1" 

> ?11
Traceback (most recent call last):
        1: from /home/prs/.rvm/rubies/ruby-2.5.3/bin/irb:11:in `<main>'
SyntaxError ((irb):33: syntax error, unexpected '?')

我找不到上述任何文档,也无法获得这种实现的实际目的。

请帮助我进行正确的解释以及可以在何处有效使用(如果提供了示例,则为感谢)。

1 个答案:

答案 0 :(得分:5)

  

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

?a       #=> "a"
?abc     #=> SyntaxError
?\n      #=> "\n"

https://ruby-doc.org/core-2.3.0/doc/syntax/literals_rdoc.html#label-Strings