😾
Ruby初学者が学んだメソッドを整理(map/each/product)
前提
・学んだメソッドをアウトプットする。
・調べて記載するつもりだけど、間違った解釈で記載している可能性もあるので注意
・map
mapは配列の各要素に対して、記述した処理を行って、新しい配列を作成してくれる。
int = (1..10)
double_int = int.map do |i|
i * 2
end
p double_int
#[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
また「&」を使った省略形で書くこともできる。
num = [1,2,3,4,5]
new_num = num.map(&:odd?)
#odd? は整数が奇数かどうかを真偽値で返す
p new_num
# [true, false, true, false, true]
省略形では数値を2倍する...みたいなカスタム操作は出来ないので注意。
・each
mapと似てるけど、mapは処理の結果を経て、新しい配列で返すのに対して
eachはブロック内の処理を要素の数だけ繰り返し行うだけ。
int = (1..10)
int.each do |i|
a = i * 2
p "2倍した数字は#{a}です"
end
使い分けのイメージとしては、
・eachは今ある配列を使って、何らかの処理を出力
・mapは今ある配列を加工して、今後の処理に使用、活用する
という感じ。
・product
配列と配列の組み合わせを出力
array = [1,2].product([3,4])
p array
#[1, 3], [1, 4], [2, 3], [2, 4]
課題でトランプゲームを作る必要があって、その際に使用。
SUITS = %w[ハート ダイヤ クラブ スペード]
VALUES = %w[A 2 3 4 5 6 7 8 9 10 J Q K]
cards = SUITS.product(VALUES).shuffle
p cards
#["クラブ", "2"], ["スペード", "A"], ["スペード", "J"], ["スペード", "Q"]...
まとめ
・こうやって羅列していくと思ったよりメソッドに触れていない
・メソッドの仕様を理解するのは前提として、それをどう活用していくか を頑張りたい
Discussion