配列とイテレータ・繰り返し

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

配列をイテレータ、for, whileなどのループ文で処理する例です。

スポンサーリンク

puts "---配列をイテレータで操作する"
a = %w|appele orange melon banana cherry|
p a
 
puts "---配列要素を1つずつ操作"
a.each{|i|
    print i, ", "
}
p a
 
puts "---配列要素を1つずつ操作した後、配列を返す"
b = a.collect{|i| i.upcase}        # collect!なら破壊
p b
b.map!{|i|        # mapはcollectと同じ操作"
    # iを全部小文字にした後、先頭だけ大文字にする
    i.downcase.gsub(/^\w/){$&.upcase}
}
p b
p a        # aは破壊されていない
 
puts "---配列は関係ないよ。正規表現でブロック渡し"
p "abcdef"[5].chr.upcase
p "hello ruby".gsub(/\b\w/){$&.upcase}    # 単語の先頭を大文字に
p "hello ruby".gsub(/^\w/){$&.upcase}    # 行の先頭を大文字に
 
puts "---forで配列回し"
p a
for i in a
    if i =~ /n/        # "n"を含んでいれば出力
        print i, ', '
    end
end
puts
 
#puts "配列でインデックスも一緒に回す"
a.each_with_index{|item, index|
    puts "#{index} => #{item}"
}
p a
 
puts "破壊的メソッドで、要素取り出しループ"
while item = a.shift
    print "#{item} is fruits !\n"
end
p a        # shiftで空になる
 

実行結果。

---配列をイテレータで操作する
["appele", "orange", "melon", "banana", "cherry"]
---配列要素を1つずつ操作
appele, orange, melon, banana, cherry, ["appele", "orange", "melon", "banana", "
cherry"]
---配列要素を1つずつ操作した後、配列を返す
["APPELE", "ORANGE", "MELON", "BANANA", "CHERRY"]
["Appele", "Orange", "Melon", "Banana", "Cherry"]
["appele", "orange", "melon", "banana", "cherry"]
---配列は関係ないよ。正規阜サでブロック渡し
"F"
"Hello Ruby"
"Hello ruby"
---forで配列回し
["appele", "orange", "melon", "banana", "cherry"]
orange, melon, banana,
0 => appele
1 => orange
2 => melon
3 => banana
4 => cherry
["appele", "orange", "melon", "banana", "cherry"]
破壊的メャbドで、要素取り出しループ
appele is fruits !
orange is fruits !
melon is fruits !
banana is fruits !
cherry is fruits !
[]
スポンサーリンク
 
スポンサーリンク