咳といいます。

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の仕様でしょうか?