Arrayその5
Array#transpose
二次元配列に対して使うメソッド。行と列を転置する。
a = [[1,2],[3,4],[5,6]] a.transpose # => [[1, 3, 5], [2, 4, 6]]
似たようなものに Enumerable#zip がある。これは配列の引数とって足してから行と列を転置するメソッド。
b = [1,2] c = [3,4] d = [5,6] b.zip(c,d) # => [[1, 3, 5], [2, 4, 6]]
Array#values_at
引数で指定された位置の要素を含む配列を返す。とびとびの要素を取得することが出来る。
a = %w{ a b c d e f } a.values_at(1, 3, 5) # => ["b", "d", "f"] a.values_at(1, 3, 5, 7) # => ["b", "d", "f", nil] a.values_at(-1, -3, -5, -7) # => ["f", "d", "b", nil] a.values_at(1..3, 2...5) # => ["b", "c", "d", "c", "d", "e"]
Array#insert
第一引数が負の数でなければ、第二引数以降の要素を第一引数の数の直前に挿入。負の場合は末尾から数えた要素の直後に挿入する。
a = %w{ a b c d } a.insert(2, 99) # => ["a", "b", 99, "c", "d"] a.insert(-2, 1, 2, 3) # => ["a", "b", 99, "c", 1, 2, 3, "d"] a.insert(-1, "e") # => ["a", "b", 99, "c", 1, 2, 3, "d", "e"]
Array#cycle
要素を引数に渡された数だけ繰り返すeach的なメソッド。ブロック引数渡さない場合はEnumeratorオブジェクトを返す。引数渡さないときは無限回繰り返す。
[1,2,3].cycle(3) do |i| print i; end # => 123123123