Rubyのmapメソッドでwith_indexを使う方法を現役エンジニアが解説【初心者向け】

初心者向けにRubyのmapメソッドでwith_indexを使う方法について解説しています。with_indexを使うと指定したインデックスから繰り返し文を使うことが出来ます。ループ文を1行でわかりやすく書くことが出来てとても便利です。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Rubyのmapメソッドでwith_indexを使う方法について解説します。Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

mapメソッドでwith_indexを使う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

with_indexとは

with_indexとは、rubyの配列などの要素にindex(0から始まる数)を添えることができるメソッドです。

mapに対して使用すれば、ブロックの処理の中でindexを扱うことができます。配列に対して番号を振りたい時や、配列からhashを作成する時など様々な場面で使用します。

map.with_indexの書き方

with_indexは、mapの後に.with_indexと続けることで使用できます。ブロックで最後に書いたブロック引数にindexが代入されます。

# 配列arrayにmapメソッドを使う
# with_indexでindexを添える(0から始まる)
array.map.with_index{ |fruit,index|
#処理
}

 

また数値を引数にとることができ、indexのスタートする数値を変えることができます。

 

# with_indexでindexを添える(1から始まる)
array.map.with_index(1){ |fruit,index|
    #処理
}

 

以上が使い方です。

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

それでは実際に書いてみましょう。まずは引数なしの場合(indexが0から始まる場合)です。

# 配列fruits
fruits = ["apple","orange","banana"]
# 配列fruitsにmapメソッドを使う
# with_indexでindexを添える(0から始まる)
fruits.map.with_index{ |fruit,index|
    puts "#{index}番目は#{fruit}"
}

 

実行結果は以下の通りです。

0番目はapple
1番目はorange
2番目はbanana

次に、引数に1を持たせた場合(indexが1から始まる場合)です。

# 配列fruits
fruits = ["apple","orange","banana"]
# with_indexで引数に1を入れる
fruits.map.with_index(1){ |fruit,index|
    puts "#{index}番目は#{fruit}"
}

 

実行結果は以下の通りです。indexが1から始まります。

1番目はapple
2番目はorange
3番目はbanana

以上がwith_indexの使い方です。mapメソッドやその関連のメソッドをマスターすると配列の扱いがずっと楽になるので、ぜひ覚えましょう。

筆者プロフィール

メンター金成さん

フリーランスエンジニア。
Railsの案件を中心に、様々なアプリケーションを開発してます。

使える言語は、ruby python go 。最近はgoにハマってます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。