ときどきはまるp&block
p obj.meth do ... end
というように書いてしまって、methにブロックがわたらなくて悩んでしまうことがある。なぜかというと、上記の構文は、
p(obj.meth) do ... end
だから。そして、メソッドに必要のないブロックがくっついたとしても、パーズでも実行時でも例外は起きないから。
{}なら直前のメソッドにくっつくので大丈夫
p obj.meth { ... }
は
p(obj.meth { ... })
と同じ
p obj.meth do ... end
というように書いてしまって、methにブロックがわたらなくて悩んでしまうことがある。なぜかというと、上記の構文は、
p(obj.meth) do ... end
だから。そして、メソッドに必要のないブロックがくっついたとしても、パーズでも実行時でも例外は起きないから。
{}なら直前のメソッドにくっつくので大丈夫
p obj.meth { ... }
は
p(obj.meth { ... })
と同じ