咳といいます。
previewが出たので1.8.0でdRubyに挑戦してます。
ruby-1.8.0-preview1とruby-1.6.8のyieldの引数の違いについて
教えてください。
困っているのは yield() と yield(nil) がブロックで区別できない
ところです。
ruby-1.6.8では次のようにそれぞれ異なるのですが‥
def foo(*arg)
yield(*arg)
end
foo() {|*x| p x} # -> []
foo(nil) {|*x| p x} # -> [nil]
foo(1) {|*x| p x} # -> [1]
ruby-1.8.0-preview1では次のように同じになってしまいます。
foo() {|*x| p x} # -> []
foo(nil) {|*x| p x} # -> [] ← yield()と同じになってしまう。
foo(1) {|*x| p x} # -> [1]
# foo(1)はあんまり関係ないですが参考までに。
ruby-1.6.8のように区別できるようになるとうれしいのですが、
これはruby-1.8.0の仕様でしょうか?