Just do IT

思うは招く

Rubyで配列がブロック引数に渡される場合の便利な書き方

たとえば以下のような2次元配列があり、それぞれの要素を掛け算する場合。

tateyoko = [
  [20,40],
  [50,20],
  [40,90],
]
menseki = []
tateyoko.each do |tateyoko|
  length = tateyoko[0]
  width = tateyoko[1]
  menseki << length * width
end
p menseki

menseki配列はこんな結果になる。

menseki => [800, 1000, 3600]

ただ、ブロック引数に2次元配列を渡すとき、こんな書き方もできる。

tateyoko = [
  [20,40],
  [50,20],
  [40,90],
]
menseki = []
tateyoko.each do |tate, yoko|
  menseki << tate * yoko
end

引数を2つにすることで、各配列の要素をそのまま受け取れる。

tateyoko.each do |tate, yoko|

2次元配列を処理するのに2重ループ回してたりしたけど、こっちのほうがスッキリ書けるケースはあるのかも。