まず、つぎのコードとその出力結果は理解できますか?
x.rb
ruby
1ary1 = [0, 1, 2, 3]
2ary2 = [4, 5, 6, 7]
3ary3 = [8, 9, 10, 11]
4ary = [ary1,ary2,ary3]
5
6ary.each do |i|
7 p i
8end
$ ruby x.rb
[0, 1, 2, 3]
[4, 5, 6, 7]
[8, 9, 10, 11]
各要素の値を 次のように 2 倍にした値を表示することにチャレンジしてみます。
[0, 1, 2, 3] --> 0, 2, 4, 6
ruby
1ary.each do |i|
2 i.each do |item|
3 puts item * 2
4 end
5end
実行結果
$ ruby x.rb
2
4
6
8
10
12
14
16
18
20
22
蛇足:
Array には、要素毎に処理をするためのメソッドがいろいろ用意されています。
map, inject, join, ...
(ruby の API リファレンスを読んでみてください)
次の4つの例でも、同じ出力結果になります。
ruby
1puts ary.map { |v| v.map { |x| x * 2 } }.join("\n")
2
3ary.map { |v| v.map { |x| puts x * 2 } }
4
5puts ary.flatten.map { |x| x * 2 }.join("\n")
6
7require 'vector'
8puts (Vector[*(ary.inject([]) {|a, e| a += e })] * 2).to_a.join("\n")
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/05/30 05:29