is_a?メソッド、kind_of?メソッド
(役割)引数で型を指定し、レシーバーがその型に当てはまっていたらtrue、そうでなければfalseを返す。
(特徴)レシーバーのスーパークラス(親クラス)の型も評価できる。
*is_a?,kind_of?は同じ役割
string = "lotte"
string.is_a?(String) => true
string.is_a?(Integer) => false
string.is_a?(Object) => true
4行目:引数にスーパークラスの型が入っていてもtrueを返している
instance_of?メソッド
(役割)上記のis_a?,kind_of?と同じ。
(特徴)レシーバーの型のみ評価する。厳密なチェックをしたいときに使う。
string = "lotte"
string.instance_of?(String) => true
string.instance_of?(Integer) => false
string.instance_of?(Object) => false
4行目:引数にスーパークラスの型が入っている場合、falseを返している
スーパークラスとは
各要素にあるクラスの親クラスのことをいう。
例)
・文字列 “lotte”のクラスは「String」 → Stringのスーパークラスは「Object」→ Objectのスーパークラスは「Basic Object」
「String」<「Object」<「Basic Object」
・整数334のクラスは「Integer」 → Integerのスーパークラスは、数字全般を表す「Numeric」→Numericのスーパークラスは「Object」
「Integer」<「Numeric」<「Object」