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

时间:2013-05-20 01:04:18

标签: ruby operators

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

我看到以下作品:

> ?{
=> "{" 
> ?\s
=> " " 
> ?a
=> "a" 

这不起作用:

> ?ab
SyntaxError: (irb):4: syntax error, unexpected '?'

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

的问题:

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

4 个答案:

答案 0 :(得分:25)

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

答案 1 :(得分:9)

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

答案 2 :(得分:2)

Re#2,我发现它有用的地方在于传达我正在设置的参数或我正在测试的值是单个字符,而不仅仅是因为这只是一个简短的串。这是一个微妙的可读性/文档化的东西,但值得考虑以后的维护者(包括我自己)。

答案 3 :(得分:0)

红宝石方法中的

“?”标记表示该方法将返回true或false。

检查方法名称后,我们可以确定此方法将返回布尔值。

示例:

空吗? -此方法将检查对象是否为空。取决于它会返回true或false。

用途:

[1,2,3]。空吗? -返回false

[]。空? -返回true