首页 > 解决方案 > '?' 的单字母字符串表示

问题描述

我在控制台中观察到了这一点,并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 '?')

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

请帮助我进行正确的解释以及可以有效使用的地方(如果提供示例,将不胜感激)。

标签: ruby

解决方案


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

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

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


推荐阅读