Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

【Ruby入門】自分自身を説明できるオブジェクトの作り方 ― to_sとinspectメソッドの使い方

この記事では、Rubyの inspect メソッドの仕組みと、その用途について詳しく解説します。

文字列や配列を表示すると、その中身がそのまま出力されます。

:

puts [1,2,3]

1
2
3

しかし、自作したクラスのオブジェクトを表示しようとすると…

次のような出力になります:

#<Cat:0x29458e0>

なぜでしょうか?

それは、Rubyに対して「このクラスをどう表示すれば分かりやすいか」をまだ教えていないからです。

to_s のようなメソッドを定義すれば、この表示は自由に変更できます。

それでは、具体的なやり方を見ていきましょう!

to_sメソッドの実装

puts にオブジェクトを渡すと、Rubyは自動的に to_s メソッドを呼び出し、その戻り値である文字列表現を出力します。

デフォルトでは、クラス名(Cat)に加えて、object_id を16進数で表した数値(0x29458e0)が表示されます。

これを変更するには、次のようにします:

class Cat
  def to_s
    "I'm a cat"
  end
end

puts Cat.new
# "I'm a cat"

さらに、クラスがインスタンス変数を持っている場合は、その値をオブジェクトの説明に組み込むことも可能です。

たとえば、こんな感じです:

class Cat
  attr_reader :color

  def initialize(color)
    @color = color
  end

  def to_s
    "I'm a #{color} cat"
  end
end

puts Cat.new("blue")
# "I'm a blue cat"

puts Cat.new("white")
# "I'm a white cat"

これで、オブジェクトを表示したときに、より役立つ情報が得られるようになりました。

便利だと思いませんか?

Rubyのinspectメソッドとは

オブジェクトを表現する方法には、大きく分けて2つあります。

1つ目は to_s を使う方法です。

これは、ユーザーにオブジェクトを見せるときに表示したい内容を定義するためのものです。

例えばTimeオブジェクトなら、内部で実際に保持しているエポック秒(1546021067)ではなく、人間にとって意味のある形式(2018-12-28 19:17:28)で時刻を表示しますよね。

もう1つが inspect です。こちらは、オブジェクトのより生(ロウ)な状態をそのまま表現します。

では、両者の違いは何でしょうか?

  • to_s: puts を使ったときに表示される、ユーザー向けの見せ方を定義する。
  • inspect: デバッグ時に自分や他の開発者の助けになる、開発者向けの情報を定義する。

例を見てみましょう:

"abc".inspect

結果はこうなります:

"abc"

inspect は引用符をそのまま残して表示し、改行コード(\n)などの特殊文字も可視化してくれます。これにより、文字列の中に隠れた制御文字も一目で確認できます。

さらに嬉しいことに、自分のクラスにも inspect メソッドを実装できます 🙂

やり方はこちら:

class Cat
  attr_reader :color

  def inspect
    "Cat - id: #{object_id} - color: #{color}"
  end
end

Cat.new("white").inspect
# "Cat - id: 23316588 - color: white"

このようにすれば、「自分自身を説明できる」オブジェクトを作ることができます!

動画チュートリアル

まとめ

この記事では、Rubyの inspectto_s メソッドを活用して、より扱いやすいクラスを作る方法を学びました。それぞれの用途を正しく理解し、ユーザー向けの表示とデバッグ用の表示を使い分けられるようになれば、コードの品質と開発効率がぐっと向上します。

この記事が役に立ったと思ったら、ぜひシェアして更多人に届けてください。

最後までお読みいただき、ありがとうございました。

  1. Excelのオブジェクト機能を使ってアートポートフォリオを作成する方法

    ギャラリーへ作品を応募する際、作品名や説明、画像やPDFファイルをまとめて送りたいと思ったことはありませんか?Excelのオブジェクト挿入機能を活用すれば、こうしたファイルを1つのスプレッドシートに埋め込んだアートポートフォリオを簡単に作成できます。この記事では、具体的な手順をステップごとに詳しく解説します。 ワークブックのダウンロード Excelにおける「オブジェクトの挿入」とは? Excelでのオブジェクトの挿入とは、PDFファイル、Word文書、ビットマップ形式の画像といったファイルを、スプレッドシート本体の中に直接保存することを指します。Excelを使ってこれらのファイルを管理する

  2. 【Excel】自動的に更新されるデータベースの作り方|4つの実践テクニック

    この記事では、Excelで自動的に更新されるデータベースを作成するための、実用的な4つの方法をわかりやすく解説します。売上や天気予報など、常に変化するデータを扱う業務では、元データが更新されたときにデータベース側も自動的に反映される仕組みが非常に重要です。手作業でのコピーや修正の手間を省き、ミスも防げます。それでは、具体例とともに各方法を見ていきましょう。 Excelで自動更新されるデータベースを作成する4つの方法 方法1:Webからデータを抽出して自動更新データベースを作成する 課題:Web上の「ニューヨーク(アメリカ)の14日間天気予報」を抽出し、自動的に更新されるExcelデータベースを