Ruby each_with_indexを即理解!値を1から開始させる方法も解説

プログラミング言語Rubyのメソッドの1つであるeach_with_indexについて丁寧に解説します。

Ruby each_with_indexは、一般的なeachメソッドに加えて、配列の要素の番号も扱うことができます(以下で詳しく解説します。)

全ての項目で、具体的なソースコードを例にしてRuby each_with_indexを丁寧に解説します。

なので、Ruby初心者でもeach_with_indexが理解できる内容となっております。

また、よくある疑問として挙げられる、値を0からではなく1から開始させる方法や、each_with_indexと似ているeach.with_indexメソッドについても解説します。

本記事だけでRuby each_with_indexについて完璧に網羅しています。

ぜひ最後まで読んで、Ruby each_with_indexをマスターしてください。

公開日:2016年6月24日

Ruby each_with_indexの書き方

まずは、each_with_indexの書き方からみていきましょう。

【Ruby each_with_indexの書き方】

配列名.each_with_index do |item, i|

・・・

具体的なソースコードでみていきましょう。

#から改行まではコメントです。(プログラムの動作に影響を与えません)

sports=[“サッカー”, “テニス”, “野球”]

#配列sportsを用意

sports.each_with_index do |item, i|

puts “#{i}番目の要素は#{item}です。”

end

【結果】

0番目の要素はサッカーです。

1番目の要素はテニスです。

2番目の要素は野球です。

・配列の要素(添字)は0から始まります。

・#{~}は変数展開といいます。

#{ }の中に式や変数を入れると、その式や変数が文字列の中に展開されます。

【変数展開の例】

name=”udemy”

puts “私は#{name}で学習します。”

【結果】

私はudemyで学習します。

あとは一般的なeach文と同じですね。each_with_indexでは、変数展開に気をつけましょう。

以上のソースコードの例から、Ruby each_with_indexが大体理解できたのではないでしょうか。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

Ruby each_with_indexの値を1から始める方法

先ほどのソースコードの例では、値(i)が0からスタートしていました。

しかし、0からではなく、1から始めたいという場合はどうしたら良いでのしょうか?(以下の様な結果にしたい)

1番目の要素はサッカーです。

2番目の要素はテニスです。

3番目の要素は野球です。

正解はとてもシンプルです。

puts “#{i}番目の要素は#{item}です。”

「#{i}」を、「#{i+1}」に変更します。すると、以下のようなソースコードになりますね。

sports=[“サッカー”, “テニス”, “野球”]

#配列sportsを用意

sports.each_with_index do |item, i|

puts “#{i+1}番目の要素は#{item}です。”

end

【結果】

1番目の要素はサッカーです。

2番目の要素はテニスです。

3番目の要素は野球です。

Ruby each_with_indexで、値(i)を1から始めたい場合は、「#{i}」を「#{i+1}」に変更する。これをしっかり覚えておきましょう!

Ruby each_with_indexとeach.with_indexの違い

Rubyでは、each_with_indexに似たメソッドとして、each.with_indexがあります。

2つのメソッドの違いは何なのでしょうか?

each_with_indexでは、上記の通り、値は0から始まり、0以外の値から開始させたい場合は#{i+1}のように記述しなければなりませんでした。

しかし、each.with_indexを使えば、もっと手軽に0以外の値から開始させることができます

each.with_indexの書き方は以下の通りです。

【Ruby each.with_indexの書き方】

配列名.each.with_index(開始させたい値) do |item, i|

・・・

これだけでは分かりにくいので、具体的なソースコードを紹介します。

今回は開始させたい値を30にしてみます。

fruites = [“リンゴ”, “メロン”, “ブドウ”]

#配列fruitesを用意

fruites.each.with_index(30) do |item, i|

puts “#{i}番目のフルーツは#{item}です。”

end

【結果】

30番目のフルーツはリンゴです。

31番目のフルーツはメロンです。

32番目のフルーツはブドウです。

ちゃんと値(i)が30から開始されてますね。

each_with_indexにおいて「#{i+1}」とする手間が省けました。

値を0以外から開始させたい場合はeach_with_indexよりもeach.with_indexの方が直感的には分かりやすいかもしれませんね。

いかがでしたか?Ruby each_with_indexについての理解ができましたか?

プログラミング言語Rubyを理解できるようになってくると、Railsというフレームワーク(Ruby on Rails)を使ってWEB開発ができるようになります。

Udemyおすすめ講座

はじめてのRuby on Rails入門-RubyとRailsを基礎から学びウェブアプリケーションをネットに公開しよう

はじめてのRuby on Rails入門-RubyとRailsを基礎から学びウェブアプリケーションをネットに公開しよう

4.4(1,879 件の評価)

13,490 人の受験生

作成者: 中村 祐太 Yuta Nakamura(ウェブ開発, 生成AI, ChatGPT, AWS)
Proglus (プログラス)(プログラミング入門)

Rails7対応。汎用性が高くPythonやPHPと同様に人気のある Rubyを使ってWebアプリケーション開発に挑戦しよう。基礎からAWSでの開発環境構築、Renderを使ってインターネットに公開するまでを体系的に学べる

\無料でプレビューをチェック!/

講座を見てみる

評価:★★★★★
HTML・CSS・JavaScript・Ruby等Progateで一通りやってから受講しましたが、一度はつまづいてしまったRailsを使った学習をとりあえず最後までやることが出来ました。動画の最後にもありましたが完成したアプリを自分なりに編集したりして学習を続けたいと思います。

評価:★★★★★
説明がわかりやすくRuby on railsの基礎と概要をしっかりと学ぶことができました。
一つの動画が短くタイトルで内容がわかるので、後から確認する際にとても役に立っています。
ありがとうございました。