#6 Rubyで学ぶループの基本
Rubyのループは、読みやすさを重視したRubyらしい、複数の書き方が用意されています。この記事では、Rubyにおけるループの基本と、インデックス番号を使った処理まで解説します。
timesによる繰り返し
決まった回数を繰り返す場合、Rubyには`times`という独特で読みやすい書き方があります。
5.times do |i|
puts i
end
「5回」という意図がそのままコードに表れているのが、Rubyらしい特徴です。
eachで配列の中身を処理する
配列の中身を1つずつ処理したい場合は、`each`を使います。
fruits = ["りんご", "みかん", "ぶどう"]
fruits.each do |fruit|
puts fruit
end
インデックス番号も一緒に使いたい場合は、`each_with_index`が便利です。
fruits.each_with_index do |fruit, index|
puts "#{index}: #{fruit}"
end
while文
count = 0
while count < 5
puts count
count += 1
end
逆に「条件を満たさない間、繰り返す」という書き方をしたい場合は、`until`を使うとより自然に読めることがあります。
count = 0
until count >= 5
puts count
count += 1
end
範囲(Range)を使ったループ
決まった範囲を繰り返したい場合は、`Range`オブジェクトの`each`もよく使われます。
(1..5).each do |i|
puts i
end
`1..5`は5を含み、`1...5`(ドット3つ)は5を含まない、という違いがある点はSwiftの範囲演算子とも似ています。
Rubyならではの注意点
`do |i| ... end`という書き方は「ブロック」と呼ばれる、Rubyの重要な機能です。最初は独特に見えますが、`times`や`each`のあとに「繰り返す処理そのもの」を渡している、と理解すると納得しやすくなります。ブロックは`{ }`(波かっこ)を使って1行で書くこともでき、`5.times { |i| puts i }`のように短く書く流儀もよく使われます。長い処理は`do ... end`、短い処理は`{ }`、という使い分けが一般的な慣習です。
まとめ
Rubyのループは`times`・`each`・`while`・`until`が基本で、インデックスが必要な場合は`each_with_index`が便利です。ブロックという考え方に慣れることが、Rubyらしいコードを書く近道になります。
本ページはプロモーションを含みます。
参考書籍(PR)
Rubyをもっと学びたい方には「プロを目指す人のためのRuby入門[改訂2版]」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿