ファイルを実行した時と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
を知らなかったため、学んだこととしてブログにまとめてみました。
もし、書いた内容でおかしな点があった際はコメントで教えていただけると幸いです。
それではまた、よろしくお願いします〜!