{}のところがブロックという
配列.each do {|変数|処理}
end
配列の要素を先頭から一つずつ||内の変数に入れて、{}に書いた処理をする
(1..5).each { |i| puts 2 * i }
2
4
6
8
10
=> 1..5
上のは下みたいにも書ける
(1..5).each do |i|
?> puts 2 * i
end
2
4
6
8
10
=> 1..5
(1..5).each do |number|
?> puts 2 * number
puts '--'
end
2
--
4
--
6
--
8
--
10
--
=> 1..5
3.times { puts "Betelgeuse!" } # 3.timesではブロックに変数を使っていない
"Betelgeuse!"
"Betelgeuse!"
"Betelgeuse!"
=> 3
配列を一つずつ変数に入れて{}内の処理をするmapメソッドは配列で返されてくる
(1..5).map { |i| i*2 } # 「*」記法は冪乗 (べき乗)
=> [1, 4, 9, 16, 25]
%w[a b c] # %w で文字列の配列を作成
=> ["a", "b", "c"]
%w[a b c].map { |char| char.upcase }
=> ["A", "B", "C"]
%w[A B C].map { |char| char.downcase }
=> ["a", "b", "c"]
shuffleメソッドについて
('a'..'z').to_a # 英小文字を列挙した配列を作る
=> "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o",
"p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z".to_a.shuffle # シャッフルする
=> "c", "g", "l", "k", "h", "z", "s", "i", "n", "d", "y", "u", "t", "j", "q",
"b", "r", "o", "f", "e", "w", "v", "m", "a", "x", "p".to_a.shuffle[0..7] # 配列の冒頭8つの要素を取り出す
=> "f", "w", "i", "a", "h", "p", "c", "x".to_a.shuffle[0..7].join # 取り出した要素を結合して1つの文字列にする
=> "mznpybuj"