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

问题描述 投票:0回答:4

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

我看到以下作品:

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

这行不通:

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

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

问题:

  1. 这个操作员是做什么的?
  2. 什么时候应该使用它?
  3. 如果它真的只创建一个单字符字符串,为什么它会包含在语言中?这不会破坏语言的正交性吗?有什么好处?
ruby operators
4个回答
31
投票

它返回单个字符串。这是编写单字符字符串文字的最短方法。当您想要定义大量单字符字符串时,请使用它。这是 Ruby 的遗产 <1.9, where it used to return the ASCII code for that character. I don't understand what you mean by "break the language orthogonality".


13
投票

它不是一个运算符,而是一个字符文字。然而,Ruby 中没有字符类型,因此字符文字计算为“字符的默认表示形式”,而不是字符类型的实例。在 Ruby 1.9+ 中,这是长度为 1 的

String
,在 Ruby 1.8 中,这是表示字符的 Unicode 代码点的
Fixnum


2
投票

我发现它有助于传达我正在设置的参数或我正在测试的值是单个字符而不仅仅是一个短字符串。这是一个微妙的可读性/文档问题,但值得后来的维护者(包括我自己)考虑。


-4
投票

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

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

示例:

空? - 此方法将检查对象是否为空。根据情况,它将返回 true 或 false。

用途:

[1,2,3].空? - 返回错误

[].空? - 返回 true

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.