我在控制台中观察到了这一点,并在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 '?')
我找不到上述任何文档,也无法获得这种实现的实际目的。
请帮助我进行正确的解释以及可以在何处有效使用(如果提供了示例,则为感谢)。
答案 0 :(得分:5)
还有一个用于表示单个字符串的字符文字表示法,其语法是问号(?),后跟与脚本编码中的单个代码点相对应的单个字符或转义序列:
?a #=> "a"
?abc #=> SyntaxError
?\n #=> "\n"
https://ruby-doc.org/core-2.3.0/doc/syntax/literals_rdoc.html#label-Strings