irbのinspectについて

ファイルを実行した時とirbでコードを実行したときの違いが気になった

こんにちは、まいむです。 私は現在、Fjord Boot Campでプログラミング学習中なのですが、課題に取り組む中でちょっと気になったことがありました。

何かというとRubyのコードを書いたファイルを実行した時とirbでコードを実行したときの違いです。

例えばmilk.rbと題して以下のコードが書かれたファイルをターミナルで実行します。

# milk.rb

milk = ["牛乳", "豆乳", "オーツミルク"]

milk.each do |cafelatte|
  puts cafelatte
end
// ターミナルでの実行結果

$ ruby milk.rb
牛乳
豆乳
オーツミルク

each メソッドで配列の中身を順番に出力しています。

今度はirbで実行してみます。

$ irb
irb(main):001:0> milk = ["牛乳", "豆乳", "オーツミルク"]
=> ["牛乳", "豆乳", "オーツミルク"]
irb(main):002:0>
irb(main):003:1* milk.each do |cafelatte|
irb(main):004:1*   puts cafelatte
irb(main):005:0> end
牛乳
豆乳
オーツミルク
=> ["牛乳", "豆乳", "オーツミルク"]

最後に配列が出力されていますね。 これが何でだろうと気になってしまったのですが、irbは出力結果をデフォルトでinspect しているためでした。

inspect についてリファレンスで調べると

自身を人間に読みやすい文字列にして返します。

とありました。 自身とは self のことですね。

上の例でいくと each メソッドのレシーバーである変数 milk です。

変数 milk には配列が代入されているため、irb上ではそれが表示されていたということ。

inspect を知らなかったため、学んだこととしてブログにまとめてみました。

もし、書いた内容でおかしな点があった際はコメントで教えていただけると幸いです。

それではまた、よろしくお願いします〜!