一元问号(?)运算符有什么作用?

fot*_*nus 27 ruby operators

我在HAML代码中看到了这个运算符.我想知道它是为了什么.

我看到以下作品:

> ?{
=> "{" 
> ?\s
=> " " 
> ?a
=> "a" 
Run Code Online (Sandbox Code Playgroud)

这不起作用:

> ?ab
SyntaxError: (irb):4: syntax error, unexpected '?'
Run Code Online (Sandbox Code Playgroud)

所以我认为它需要一个字符作为参数并返回一个带有该字符的字符串.

问题:

  1. 这个运营商做什么?
  2. 什么时候应该使用它?
  3. 如果它真的只创建一个单字符串,为什么它包含在语言中呢?它不会破坏语言的正交性吗?有什么好处?

saw*_*awa 25

它返回一个字符串.这是编写单字符字符串文字的最短方法.当您想要定义许多单字符字符串时使用它.它是Ruby <1.9的遗产,用于返回该字符的ASCII代码.我不明白你的意思是"打破语言正交性".


Jör*_*tag 9

它不是一个运算符,它是一个字符文字.但是,Ruby中没有字符类型,因此字符文字不是字符类型的实例,而是评估"字符的默认表示".在Ruby 1.9+中,这String是长度为1,在Ruby 1.8中,它Fixnum表示字符的Unicode代码点.