【Ruby】inspectメソッドとは何か?わかりやすく解説!

What is inspect method? Rails

先日、Qiitaを見ていたらsession.inspectという記述をしている方がいらっしゃいました。

inspectって何やねん、と思い勉強したので、その備忘録として残しておきます。

今回は、inspectメソッドとはどのようなメソッドなのか、似たメソッドとの違いについて解説します。

Keywords:inspectメソッド, to_sメソッド

inspectメソッドとは?

inspectメソッドとは、レシーバーをわかりやすい文字列で返してくれるメソッドです

以下のように使用します。

object.inspect

具体例を見た方がわかりやすいです。以下はプログラム例とその出力です。

文字列に対してメソッドを使った場合のプログラム

puts "hitori".inspect

出力

"hitori"

配列に対してメソッドを使った場合のプログラム

puts [1, 2, "3", 4, 1+4].inspect

出力

[1, 2, "3", 4, 5]

クラスのオブジェクトに対してメソッドを使った場合のプログラム

class Hitori
    def initialize(name)
        @name = name
    end
end

puts Hitori.new("watashi").inspect

出力

#<Hitori:0x0000000100c26860 @name="watashi">

このようにinspectメソッドはオブジェクトをそのまま(または分かりやすい形)で返してくれるメソッドということがわかりました。

ってことはinspectメソッドはto_sメソッドと同じなのでは?と考えた方もいると思います。

次の章ではinspectとto_sの違いについて確認しましょう。

inspectとto_sの違い

nilに対してinspectto_sメソッドを適応させていきましょう。

puts nil.inspect
puts nil.to_s

出力

nil
 

inspectメソッドの方は文字列nilが表示されましたが、to_sメソッドは真の意味でのnilが出力されました(何も表示されない)。

もう一つ例を見てみましょう。文字列に対してメソッドを使用してみます。

puts "hitori".inspect
puts "hitori".to_s

出力

"hitori"
hitori

inspectメソッドの方は""が付いた状態で出力され、to_sメソッドの方は何も付与されずに出力されました。

inspectメソッドとto_sメソッドはどちらも文字列を返すという点では同じ機能ですが、その返す文字列は微妙に異なっています。

個人的には、inspectメソッドは何のオブジェクトなのかを明確にした文字列を返し、to_sメソッドはオブジェクトの持つ意味を汲み取った上で文字列を返すといった感じで覚えています

nilはnilというオブジェクトの一種だよ、ということが分かりやすいようにinspectメソッドは「nil」を返しますが、to_sメソッドは意味を理解してくれる親切なメソッドです。そのため、nilの意味である「何もない」ということを示す「(無)」を返してくれます。

どちらを使った方がいいのかは、状況によって変わりそうです。

まとめ

この記事のまとめ

inspectメソッドはよく使うものではなさそうですが、「この変数って何者?」って思ったときに活躍してくれそうです。

まだまだ知らないメソッドがあるので学習を怠らないようにします。

最後までご覧いただき、ありがとうございます。お疲れ様でした。

コメント

タイトルとURLをコピーしました