タイトルのため申し訳ありませんが、私はこの構文がどのように呼び出されるのかわかりません。例えばなぜこのコードはruby 1.9ではコンパイルされていませんが、ruby 1.8ではコンパイルされていますか?
:
ary = [ [11, [1]], [22, [2, 2]], [33, [3, 3, 3]] ]
# want to get [ [11, 1], [22, 2], [33, 3] ]
ルビー1.8
ary.map{|x, (y,)| [x, y] }
#=> [[11, 1], [22, 2], [33, 3]]
ary.map{|x, (y)| [x, y] }
#Syntax error, unexpected '|', expecting tCOLON2 or '[' or '.'
#ary.map{|x, (y)| [x, y] }
# ^
Ruby 1.9の
ary.map{|x, (y,)| [x, y] }
#SyntaxError: (irb):95: syntax error, unexpected ')'
#ary.map{|x, (y,)| [x, y] }
# ^
ary.map{|x, (y)| [x, y] }
#=> [[11, 1], [22, 2], [33, 3]]
※私が欲しかった配列を取得する方法を求めていないのです。
私はを知りたいと思いますが、このコードはRubyのバージョンのいずれかであるが、両方ともではありません。
、それは姿を消し、ルールのいくつかの種類があった意味ですか? – oldergod
私はそれが問題を横断しているのでそれほど必要とは思わなかった。ブロック引数のセマンティクス全体が1.9で大幅に見直されました。デフォルトと '* args'型のcatch-allsオプションの引数がサポートされるようになりました。 1つのアイテムでリストを許可しないで、2番目の名前が実際に名前が付けられているかどうかを気にしないというこの風変わりな動作は削除されたようです。 – tadman