配列の要素番号を表示する(each_with_indexメソッド)

12日目です。

昨日はギリギリに投稿しようとしたところ電波が悪く日を跨いでしまいました。

このようなことも見越して動かなければいけないと反省しました。

(この1週間群馬県高崎市にいるのですが、Wi-Fiの電波常に1本でイライラします笑)

 

本日の学習でミニアプリを作っていたのですが、最後に配列の要素番号を表示する方法が出てきました。

なんとか解答を見ずに実装したいと思い、ネットで「要素番号を取得する」で調べたところ、下記のサイトが分かりやすく教えてくれました。

参照:https://uxmilk.jp/23853

答えは「each_with_indexメソッド」を使うです。思い返すとチェリー本にも説明が載ってましたが、やはり一度サンプルコードを書いただけでは忘れますね。

each_with_indexメソッドの使い方

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー

配列データ.each_with_index do |x, i|

  処理内容

end

xが配列の各要素を取得し、iが要素数を取得してくれます。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー

仮に、下記のような配列があったとします。

animals = ["dog", "cat", "pig"]

animals.each_with_index do |animal, i|

  puts "[#{i}] : 私が飼っているのは#{animal}です"

end

と入力すると、↓

[0] : 私が飼っているのはdogです

[1] : 私が飼っているのはcatです

[2] : 私が飼っているのはpigです

となります。

 

これで課題は解決しました。

ただ、解答を見てみると下記のような方法で要素数を表示していました。

number = 0

animals = ["dog", "cat", "pig"]

animals.each do |animal|

  puts "[#{number}] : 私が飼っているのは#{animal}です"

  number += 1

end

確かにeachメソッドしか習っていなかったので、上記のような答えになりますよね

(算数で習っていない公式を使ってしまった感じでしょうか笑)

ただリファクタリングしたら結局最初に解答に近づくのかなと思うのでよしとします。

 

 

ーーーーーーーーーーーー

本日また、今まで知らなかったのが恥ずかしいコマンドを覚えました。

自分と同じような初心者の方は知らないかもしれないので載っけます。

ターミナルでファイルを読み込むとき

$(プロンプト)の後に「ruby sample.rb」 のようなファイル名を打ち込むかと思いますが、編集して再度同じファイル名を読み込みたい時は、「キーボードの▲を押せば同じファイル名を表示してくれる」ことを知りました。

今まで同じファイル名を打ち込んだり、わざわざコピペしていた時間、本当に無駄だったなと悲しくなりました笑

 

本日は事前学習のRubyを2/3ほど進めました。

明日も内容がヘビーなのですが、なんとかRubyは明日中に終わらせたいです。