匿名ブロックとハッシュ ブロックはほぼ同じように見えます。私はそれで遊んでいました。そして、私は以下のようないくつかの深刻な観察に達しましたか?
{}.class
#=> Hash
わかりました、それはクールです。空のブロックは と見なされHash
ます。
print{}.class
#=> NilClass
puts {}.class
#=> NilClass
上記のコードは と同じNilClass
ですが、下のコードはHash
再び を示しているのはなぜですか?
puts ({}.class)
#Hash
#=> nil
print({}.class)
#Hash=> nil
1つ上で何が起こっているのかを理解するために、誰かがここで私を助けることができますか?
私は@Lindydancerのポイントに完全に同意しません
以下の行をどのように説明しますか。
print {}.class
#NilClass
print [].class
#Array=> nil
print (1..2).class
#Range=> nil
print [].class
以下と同じではないのはなぜprint (1..2).class
ですか?
編集
local variable
and呼び出しであいまいさが発生するとmethod
、Ruby は以下のような事実についてエラーをスローします。
name
#NameError: undefined local variable or method `name' for main:Object
# from (irb):1
# from C:/Ruby193/bin/irb:12:in `<main>'
現在、同じことは起こりません(またはブロック{}
の間にあいまいさがあるため)。ここでも IRB として、それがかかどうかはわかりません。では、IRB が発生したときにエラーがスローされなかったのはなぜですか?empty code block
Hash
empty block
Hash
print {}.class
{}.class