为什么 () returns nil in Ruby?
Why does () returns nil in Ruby?
在Ruby,当你运行:
()
=> nil
输出为nil
。我不明白这是使用哪种 Ruby 机制。
我以为是在调用self()
,但是self()
returns syntax error, unexpected '(', expecting end-of-input
.
为什么会这样 return nil
,这使用了哪种语言功能?
"No value" 在 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,当你运行:
()
=> nil
输出为nil
。我不明白这是使用哪种 Ruby 机制。
我以为是在调用self()
,但是self()
returns syntax error, unexpected '(', expecting end-of-input
.
为什么会这样 return nil
,这使用了哪种语言功能?
"No value" 在 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))