.net column
.NET開発者のためのブログメディア

Rubyのeachとbreakの使い方|両方使う時に知っておきたいことも解説

2020年12月22日

SE
Rubyでの繰り返し処理とはどう言ったものでしょうか?

PM
ここではeachを使ったオブジェクトの処理についてみていきましょう。

each・breakの基本的な記述方法


Rubyでの繰り返し処理とはどういったものでしょうか?
ここではeachを使ったオブジェクトの処理や、each_with_index・each_line・each_sliceの使い方についても紹介します。
また、each以外の繰り返し処理の方法や、break、nextの使い方についても紹介します。

Rubyで繰り返し処理ができるeachの使い方8つ

今回は、Rubyでのeachを使った繰り返し処理について説明します。
Rubyでは、配列・範囲オブジェクト・ハッシュなどに対してeachで繰り返し処理ができます。
breakで繰り返し処理を抜けることができますし、nextで繰り返し処理をスキップすることができます。

eachの類似として、each_with_index・each_line・each_sliceの使い方についても紹介します。
Rubyでの繰り返し処理に興味のある方はぜひご覧ください。

1:配列

配列に対するeachの繰り返し処理を紹介します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このように、Rubyでは配列に対してeachで繰り返し処理ができます。

2:範囲オブジェクト

範囲オブジェクトに対するeachの繰り返し処理を紹介します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

文字の範囲オブジェクトに対しても、同様です。

実行結果は以下のようになります。

このように、Rubyでは範囲オブジェクトに対してeachで繰り返し処理ができます。

3:ハッシュ

ハッシュに対するeachの繰り返し処理を紹介します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

keyとvalueが表示されていることが分かります。
each_keyを使用すれば、keyだけを出力できます。

実行結果は以下のようになります。

また、each_valueを使用すれば、keyだけを出力できます。

実行結果は以下のようになります。

このように、Rubyではハッシュに対してeachで繰り返し処理ができます。
each_keyはkeyだけ、each_valueはvalueだけの繰り返し処理ができます。

4:break

Rubyでは、breakで繰り返し処理を抜けることができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このように、Rubyではbreakで繰り返し処理を抜けることができます。

5:next

Rubyでは、nextで繰り返し処理をスキップすることができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このように、Rubyではnextで繰り返し処理をスキップすることができます。

6:each_with_index

each_with_indexを使えば、繰り返し処理でインデックスを出力できます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

インデックスが出力されていることが分かります。
インデックスの開始値を変更したい場合は、each.with_indexを使用します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

この場合は、インデックス10から始まっています。
このように、Rubyではeach_with_indexを使えば、繰り返し処理でインデックスを出力できます。

7:each_line

each_lineを使えば、ファイルを1行ずつ読み込むことができます。

以下のようなファイルを読み込んで出力してみます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

ファイルの内容が出力されていることが分かります。foreachでも同じことができます。

実行結果は以下のようになります。

このように、Rubyではeach_line・foreachを使えば、ファイルを1行ずつ読み込むことができます。

8:each_slice

each_sliceを使えば、配列を指定数で分割できます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このように、Rubyではeach_sliceを使えば、配列を指定数で分割できます。

Rubyのbreakの使い方4つ

Rubyの繰り返し処理におけるbreakの使い方を以下4つ紹介します。

1:while文での使い方
2:while文でif文を利用している場合の使い方
3:for文での使い方
4:for文でif文を利用している場合の使い方

1:while文での使い方

Rubyのwhile文で繰り返し処理をbreakによって処理を終了させることができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このようにbreakに到達した時点でループを抜けます。一度しか繰り返し処理が実行されないため、0のみが表示されます。

2:while文でif文を利用している場合の使い方

次にwhileメソッドの処理の中でif文を利用した場合のbreakの使い方を見ていきます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このようにwhile文の中にif文の処理でbreakすると、ループ条件に達しなくても終了させることができます。

3:for文での使い方

Rubyのfor文の繰り返し処理でbreakによって処理を終了させることができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

for文でもwhileと同様にbreakに到達した時点でループを抜け処理を終了させることができます。

4:for文でif文を利用している場合の使い方

次にforメソッドの処理でif文を利用した場合のbreakの使い方を見ていきます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このようにfor文の中にif文の処理でbreakすると、ループ条件に達しなくても終了させることができます。

Rubyのeachとbreakを両方使う時に知っておきたいこと

Rubyのeachとbreakを両方使う時に知っておきたいことを以下2つ紹介します。

1. eachにbreakを使うと繰り返しが終了する
2. 繰り返しが入れ子になっている場合

それぞれの動きを見ていきましょう。

eachにbreakを使うと繰り返しが終了する

Rubyのeachメソッドでの繰り返し処理でbreakを使用することによって処理を終了させることができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このようにeach文でもwhile、forと同様にbreakに到達した時点でループを抜けます。

繰り返しが入れ子になっている場合

繰り返し処理の中でさらに繰り返し処理が存在しbreakが実行された場合、一番内側の繰り返しが終了し、外側の繰り返し処理は続けることができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このように内側のfor文は”for1″で処理が終了してますが、while文は条件終了まで処理が継続しています。

SE
範囲オブジェクトを利用して順番に処理することも可能ですね。

PM
状況によってはfor文を利用するよりもわかりやすいかもしれませんね。

Rubyのeachとbreakの使い方を覚えよう

いかがでしたでしょうか。Rubyでのeachを使った繰り返し処理について説明しました。

Rubyでは、配列・範囲オブジェクト・ハッシュなどに対してeachで繰り返し処理ができます。
breakで繰り返し処理を抜けることができますし、nextで繰り返し処理をスキップすることができます。

eachの類似として、each_with_index・each_line・each_sliceの使い方についても紹介しました。
ぜひご自身でソースコードを書いて、理解を深めてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags