在Ruby中,运行时:
()
=> nil
输出为nil
。我不明白这是使用哪种Ruby机制。
我以为它正在呼叫self()
,但是self()
返回syntax error, unexpected '(', expecting end-of-input
。
为什么会返回nil
,并且使用的是哪种语言功能?
答案 0 :(得分:7)
在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))