ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

Enumerableモジュール

map, collectメソッド

ブロックの結果を新しい配列で返す

[1,2,3,4,5].map{|i| i **2 }
 => [1, 4, 9, 16, 25] 

each_with_index

要素とインデックスをブロックに渡し繰り返す

[:a, :b, :c, :d, :e].each_with_index{|v, i| puts "#{v} => #{i}"}
a => 0
b => 1
c => 2
d => 3
e => 4
 => [:a, :b, :c, :d, :e]

inject , reduce

自身をたたみ込み演算を行う

[1,2,3,4,5].inject(0){|result, v| result + v ** 2}
 => 55

each_slice, each_cons

要素を指定した数ずつ渡し繰り返す

 (1..5).each_cons(3) {|items| p items}
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
 => nil 
(1..5).each_slice(3) {|items| p items}
[1, 2, 3]
[4, 5]
 => nil 

reverse_each

eachの逆順でブロックに要素を渡す

[1,2,3,4,5].reverse_each {|i| puts i}
5
4
3
2
1
 => [1, 2, 3, 4, 5] 

その他

all? :全ての要素がTrueならTrue
any? : 1つでもTrueならTrue
none? : 全てがFalseならTrue
one? : 1つの様相だけがTrueならTrue
member? , include? : 指定した値と==がTrueになる要素が有ればTrue
find , detect : ブロックを評価して最初Trueとなる値を返す
find_index : 要素の代わりにIndexを返す
find_all , select : ブロックの評価がTrueの全要素を返す
grep : 指定したパターンとマッチする要素を全て含んだ配列を返す
sort : 要素を<=>で比較し昇順にソートした配列を返す
sort_by : ブロックの評価結果を<=>で比較しソートする
max, min : 要素の最大、最小値を返す
max_by, min_by
count :要素数
first : 先頭の要素、引数が有る場合、先頭から引数分
cycle : 要素を無限に繰り返し渡す
group_by : ブロックの評価をキーとし同じキーをもつ様相をはいれつとしたはsh付を返す
zip : 自身と引数に指定した配列から、1つずつ様相を取り出して配列を作りそれを要素とする配列を返す

(1..10).group_by{|v| v % 2}
 => {0=>[2, 4, 6, 8, 10], 1=>[1, 3, 5, 7, 9]} 
[[:a, :b, :c].zip([1,2,3])
 => [[:a, 1], [:b, 2], [:c, 3]] 
[:a, :b, :c].zip([1,2,3],["a","b","c"])
 => [[:a, 1, "a"], [:b, 2, "b"], [:c, 3, "c"]]