はじめてのRuby!inspectとは!?使い方を徹底解説!

rubyには、オブジェクトや配列をわかりやすい文字列で返すメソッドとして、inspectメソッドが用意されています。

「オブジェクトや配列をわかりやすく出力するには?」
「inspectメソッドの使い方/書き方は?」
「inspectとto_sって何が違うの?」

といった方に向けて、この記事では、


【基礎】inspectメソッドとは何か?
【基礎】inspectメソッドの使い方
【発展】inspectとto_sの違い

など、inspectメソッドについての基礎から発展的な内容について解説していきます。

inspectとは

inspectメソッドとは、オブジェクトや配列などをわかりやすく文字列で返してくれるメソッドです。

実はデバッグでよく利用されるpメソッド(標準出力するメソッド)は、このinspectメソッドが使われています。

そのinspectメソッドの構文は以下のように表せます。

inspectメソッドの概要と書き方が分かったところで、次の項ではinspectメソッドの使い方について解説いたします。

inspectメソッドの使い方

inspectメソッドは、Objectクラスで定義されており、クラス名・オブジェクトid・インスタンス変数を出力します。

さらに、Stringクラス、Hashクラス、Arrayクラス、などそれぞれのクラスでinspectメソッドはオーバーライド(上書き)されています。

つまり、inspectメソッドは対象の型に沿った文字列を返すのです。

それでは、それぞれの型でinspectメソッドを使用した場合、どのように出力されるか具体的に確認していきましょう。

文字列や数値をinspectで出力する

inspectメソッドは文字列や数値の場合、値をそのまま出力します。

実行結果:

配列やハッシュをinspectで出力する

配列やハッシュの場合は、全体を[]または{}で囲み、各要素をそれぞれinspectメソッドで出力した結果が返ります。

実行結果:

モジュールやクラスをinspectで出力する

対象がモジュールの場合、モジュール名が実行結果として出力されます。

また、対象がクラスの場合、「#<クラス名:オブジェクトid インスタンス変数>」が実行結果として出力されます。

以下に、モジュールとクラスの場合のサンプルプログラムを記載します。

実行結果:

inspectとto_sの違いとは

inspectメソッドと同様のメソッドが他にもあります。

それはto_sメソッドです。

しかし、細かい部分で挙動が異なってくるので、この項ではinspectメソッドとto_sメソッドの違いを解説いたします。

nilの場合

nilをinspectメソッドとto_sメソッドで出力した場合、両者で異なる出力結果となります。

実行結果:

inspectメソッドではnilを文字列として出力しますが、to_sメソッドではそのままnilとして出力しています。

文字列の場合

文字列を指定した場合にも、異なる出力結果となります。

実行結果:

文字列を指定してinspectメソッドとto_sメソッドで出力した場合、ダブルクォーテーションの有無の違いが生じます。

クラスの場合

クラスオブジェクトの場合も、inspetメソッドとto_sメソッドに違いが生じます。

実行結果:

inspectメソッドではクラス名とオブジェクトidとインスタンス変数を出力しますが、to_sメソッドはクラス名とオブジェクトidのみ出力しインスタンス変数は出力しません。

このようにinspectメソッドとto_sメソッドでは、同じ「文字列を返す」メソッドでも微妙に違いがあるので使用する際には注意が必要です。

まとめ

この記事では、inspectメソッドの使い方をサンプルプログラムを用いて解説しました。

inspectメソッドは、オブジェクトや配列をわかりやすい文字列で返してくれるメソッドです。

ただ、inspectメソッドとto_sメソッドの違いについて注意しておく必要があります。

デバッグの際にも役に立つメソッドなので、ぜひこの機会にinspectメソッドをマスターしてください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

侍テック編集部

侍テック編集部

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説