多重代入の返値

1.9 での話。

p(x, y = []) #=> true

うええええ。直感的には [] 、百歩譲っても nil じゃない?なんでこんなことになってるのか調べたら、YARV 作者であらせられるささださんの日記にこうなった経緯が書いてあった。optparse が悪いらしい。多重代入の結果をそんな風に使うのは optparse の潜在的なバグであって *1 、処理系の方で対処することではないと思うのだけど。

*1:optparse の実際のソースは見てないですけど。