32

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

我看到以下作品:

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

这不起作用:

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

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

问题:

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

4 回答 4

29

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

于 2013-05-20T01:13:21.740 回答
13

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

于 2013-05-20T03:02:08.973 回答
2

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

于 2014-03-10T16:20:53.203 回答
-2

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

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

例子:

空的?- 此方法将检查对象是否为空。取决于它会返回真或假。

用途:

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

[]。空的?- 返回真

于 2019-11-11T10:22:55.180 回答