ruby - 为什么 () 在 Ruby 中返回 nil?

标签 ruby language-features

在 Ruby 中,当你运行时:

()
=> nil

输出为nil。我不明白这是使用哪种 Ruby 机制。

我以为它正在调用 self(),但是 self() 返回 语法错误,意外的“(”,期待输入结束.

为什么返回nil,这是使用了哪种语言特性?

最佳答案

“无值”在 Ruby 的很多地方被视为 nil:

-> { break }.()
#⇒ nil

42 if false
#⇒ nil

这里也是一样:括号是多余的,但它们维护了代码块,即空代码块,因此它被视为 nil


对于 Ruby 2.6+,您可以自己检查 AST:

main > RubyVM::AbstractSyntaxTree.parse('()')
#⇒ (SCOPE@1:0-1:2 tbl: [] args: nil body: (BEGIN@1:1-1:1 nil))

关于ruby - 为什么 () 在 Ruby 中返回 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54351373/

相关文章:

mysql - 在 ruby​​ 中表示没有日期的时间

ruby-on-rails - 有没有办法通过数组将多个参数输入到方法中

c# - 有机会在 C# 中模仿 times() Ruby 方法吗?

ruby - 如何为模型获取新的 mongoid 索引

python - 非阻塞主机名解析?

ruby-on-rails - 所有连接表都有表吗?

C# 空传播运算符/条件访问表达式和 if block

java - 除了拥有正确的方法之外,还有更多的接口(interface)吗

c# - 为什么 VB.NET 9 不像 C# 3 那样具有自动属性?

c++ - C++ using 在类中意味着什么?