行列を素早く作るにはEnumeratorをmapする
技術記事の棚卸をしていて,こちらの記事で勉強していたのですが,
[Ruby] 10行で書ける Dijkstra 法 | singular point
行列を作る手段としてこちらが使われていました。
n=6 g=n.times.collect{ Array.new(n,-1)}
collectメソッドを使い慣れていなくて(ずっとmap),一瞬なんだかわからなかったのですが,これは
pry(main)> g = n.times.map{ Array.new(n, -1) } #=> [[-1, -1, -1, -1, -1, -1], # [-1, -1, -1, -1, -1, -1], # [-1, -1, -1, -1, -1, -1], # [-1, -1, -1, -1, -1, -1], # [-1, -1, -1, -1, -1, -1], # [-1, -1, -1, -1, -1, -1]]
と同じコードです.timesメソッドがEnumeratorを返すのでこれをmapすることで配列の配列を生成しているんですね.
Class: Integer (Ruby 1.9.3)