puts {}.class
#=> NilClass
puts "".class
String
#=> nil
puts [].class
Array
#=> nil
Run Code Online (Sandbox Code Playgroud)
为什么puts {}.class不显示Hash输出然后nil像其他输出一样?
max*_*ner 15
有几点需要了解:
每当哈希是被调用方法的第一个参数时,你需要使用括号或删除大括号,否则ruby认为它是一个块.所以,puts { foo: "bar" }提出了一个语法错误,但是puts foo: "bar",puts(foo: "bar")或puts({foo: "bar"})做工精细.
可以使用块调用每个方法,但只有一些方法实际上调用了块.您可以自己测试 - puts(1) { raise }只输出数字,不会引发错误.puts { 1 }什么都不打印,因为没有调用块.
该puts方法始终返回nil.所以当你说puts {}.class,这基本上是相同的puts.class,这是NilClass