Ruby - 配列やハッシュの繰り返し each
配列の要素をいい感じに取り出して利用する
eachメソッドは「イテレータ」という種類のメソッドで、以下のような構文
配列.each do |変数| 繰り返したい処理 end
または
配列.each{|変数|} 繰り返したい処理 end
最初の例では、each以降のdo ~ end
の部分はブロックと呼ばれる部分で、こういった構文のため一般にブロック付きメソッドとも呼ばれる。ふたつ目の例はdoを省略したかたちで、基本的にこちらほうが見やすそう。
|変数|
という部分では、配列から1つずつ取りだす際に使う変数名を指定することができる。その変数をブロック内で利用することになる。なのでわかりやすい命名をしたい。
基本的な使い方の例
基本は配列もハッシュも同じような構文で、ハッシュの場合は変数を2つ設定できる。以下にハッシュの場合を示す。
neta = { :maguro => 'まぐろ', :salmon => 'サーモン', :tamago => 'たまご' } neta.each do |key, value| puts "#{key}:#{value}" end
$ruby array_prac.rb maguro:まぐろ salmon:サーモン tamago:たまご
いろんな使い方
ブロック的に使わないでかんたんに書きたいとき
neta.each{|en, ja| puts "#{en}を日本語で, #{ja}と言う!"}
$ruby array_prac.rb tunaを日本語で, まぐろと言う! salmonを日本語で, サーモンと言う! eggを日本語で, たまごと言う!
ハッシュの深さがある場合
変数指定に括弧を使えば、いい感じにやってくれる。
neta = { :tuna => ['まぐろ', 100], :salmon => ['サーモン', 200], :egg => ['たまご', 300] } neta.each{|id, (name, price)| puts "#{id}: #{name}, #{price}"}
$ruby array_prac.rb tuna: まぐろ, 100 salmon: サーモン, 200 egg: たまご, 300
参考
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/02/26
- メディア: 単行本
- この商品を含むブログ (1件) を見る