ブロック引き数で多重代入

会社でこう書けないかなと思っていたら、実は書けるということを家帰って気づいたというお話。

ちょっとしたスクリプトを書く時に、Rangeクラス使って配列作って、zipでゴニョゴニョやるというのをよくやるんですけど、今まで

((1..10).to_a.zip( (1..10).to_a )).each{ |a| puts a[0] * a[1] }

とかやっていて、indexで書くのださいなぁというか、括弧うつのだりぃとか思って、そこでパターンマッチみたくかけないかなぁと思ったら、多重代入(になるのかなぁ?)になって、やりたいことが実はできてしまうんですね。

((1..10).to_a.zip( (1..10).to_a )).each{ |a,b| puts a * b }

しらなんだなぁ。

これで明日は、スクリプトリファクタリング決定だわ。