10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Ruby/classメソッド]このオブジェクトが属しているクラスは何でしょーか!!

Posted at

初めに

「このメソッドの戻り値、どんなクラスに属しているんだ??」

あるあるな状況ですね。今回はそんな時に使える便利なclassメソッドについて紹介しつつ、クイズをしたいと思います。ぱちぱちぱち。

classメソッドとは

前述したように、こやつを使うことで、
簡単にオブジェクトが属しているクラスを確認できます。
ひええ、それは便利だ。それでは早速用例を見ていきましょう。

num1 = 10
p num.class # Integer

num2 = 1.88
p num2.class # Float

str1 = 'あるがままの心で生きようと願うから人はまた傷ついていく。'
p str1.class # String

array = [1, 2, 3, 4, 5]
p array.class # Array

name = {name: "Yamada",age: 26}
p name.class # Hash

ほおお、すごい。。
classメソッドの使い方を理解したので、早速クイズです。

参考:

問題

第一問

以下のオブジェクトmemberが所属するクラスは何でしょうか?

member = Member.where(age: 30, name: "Takashi")
pp member.class

第二問

以下のオブジェクトis_successが所属するクラスは何でしょうか?

is_success = true
pp is_success.class

第三問

以下のオブジェクトhogeが所属するクラスは何でしょうか?

hoge = "nil"
pp hoge.class

回答

第一問
答え:

# Member::ActiveRecord_Relation

joinwhere, orderなど、ActiveRecord::Relationで定義されているメソッドの戻り値はこのクラスのインスタンスオブジェクトになります。正解できましたでしょうか〜

参考:

第二問
答え:

# TrueClass

booleanだと思った人、結構いるんじゃないでしょうか。。
実はRubyにはbooleanという型は存在しません。
true,falseはそれぞれTrueClass,FalseClassに所属する唯一のインスタンスになります。

参考:

第三問
答え:

# String

NilClassと思った優秀なあなた!! 残念、これはひっかけ問題です。笑
ダブルクオーテーション("")がついているのでString型になります。

終わりに

いかがでしたでしょうか。今回のclassメソッドには、自動テストコードを書く時にかなり助けられました。
関数やメソッドの戻り値などのデータ型を調べ、想定外のバグを生まないためにも積極的に活用したいですね。

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?