7-1-2 これまで使ったオブジェクトのクラスを確認してみよう

irb上でIntegerクラスを確認する

1という整数オブジェクトのクラスを以下のプログラムで確認します。Integerが表示されます。

irb(main):001:0> 1.class
=> Integer

Floatクラスを確認する

1.08という小数オブジェクトのクラスを以下のプログラムで確認します。Floatが表示されます。

irb(main):002:0> 1.08.class
=> Float

Stringクラスを確認する

'a'という文字列オブジェクトのクラスを以下のプログラムで確認します。Stringが表示されます。

irb(main):003:0> 'a'.class
=> String

Arrayクラスを確認する

[1, 2]という配列オブジェクトのクラスを以下のプログラムで確認します。Arrayが表示されます。

irb(main):004:0> [1, 2].class
=> Array

Hashクラスを確認する

{a: 1}というハッシュオブジェクトのクラスを以下のプログラムで確認します。Hashが表示されます。

irb(main):005:0> {a: 1}.class
=> Hash

nilオブジェクトのクラスを確認する

nilオブジェクトのクラスを以下のプログラムで確認します。NilClassが表示されます。

irb(main):006:0> nil.class
=> NilClass

真偽値のクラスを確認する

真偽値(truefalse)のクラスを以下のプログラムで確認します。TrueClassFalseClassが表示されます。

irb(main):007:0> true.class
=> TrueClass
irb(main):008:0> false.class
=> FalseClass

Integerクラスの親クラスを確認する

以下のプログラムでIntegerクラスの親クラスを確認します。Numericが表示されます。

irb(main):009:0> Integer.superclass
=> Numeric

Numericクラスの親クラスを確認する

以下のプログラムでNumericクラスの親クラスを確認します。Objectが表示されます。

irb(main):010:0> Numeric.superclass
=> Object

Objectクラスの親クラスを確認する

以下のプログラムでObjectクラスの親クラスを確認します。BasicObjectが表示されます。

irb(main):011:0> Object.superclass
=> BasicObject

BasicObjectクラスの親クラスを確認する

以下のプログラムでBasicObjectクラスの親クラスを確認します。nilが表示されます。

irb(main):012:0> BasicObject.superclass
=> nil

Floatクラスの親クラスを確認する

以下のプログラムでFloatクラスの親クラスを確認します。Numericが表示されます。

irb(main):013:0> Float.superclass
=> Numeric

Stringクラスの親クラスを確認する

以下のプログラムでStringクラスの親クラスを確認します。Objectが表示されます。

irb(main):014:0> String.superclass
=> Object

Arrayクラスの親クラスを確認する

以下のプログラムでArrayクラスの親クラスを確認します。Objectが表示されます。

irb(main):015:0> Array.superclass
=> Object

Hashクラスの親クラスを確認する

以下のプログラムでHashクラスの親クラスを確認します。Objectが表示されます。

irb(main):016:0> Hash.superclass
=> Object

NilClassクラスの親クラスを確認する

以下のプログラムでNilClassクラスの親クラスを確認します。Objectが表示されます。

irb(main):017:0> NilClass.superclass
=> Object

真偽値クラスの親クラスを確認する

以下のプログラムで真偽値クラス(TrueClassFalseClass)の親クラスを確認します。いずれもObjectが表示されます。

irb(main):018:0> TrueClass.superclass
=> Object
irb(main):019:0> FalseClass.superclass
=> Object

オブジェクトのクラスかどうかis_a?メソッドで判定する

以下のプログラムでIntegerクラスのオブジェクトが継承するクラスに一致するかどうかを確認します。Floatクラス以外は全てtrueが返却されます。

irb(main):020:0> 1.is_a?(Integer)
=> true
irb(main):021:0> 1.is_a?(Numeric)
=> true
irb(main):022:0> 1.is_a?(Object)
=> true
irb(main):023:0> 1.is_a?(BasicObject)
=> true
irb(main):024:0> 1.is_a?(Float)
=> false

オブジェクトがクラスのインスタンスかどうかinstance_of?メソッドで判定する

以下のプログラムでIntegerクラスのオブジェクトが継承するクラスに一致するかどうかを確認します。Integerクラス以外は全てfalseが返却されます。

irb(main):025:0> 1.instance_of?(Integer)
=> true
irb(main):026:0> 1.instance_of?(Numeric)
=> false
irb(main):027:0> 1.instance_of?(Object)
=> false
irb(main):028:0> 1.instance_of?(BasicObject)
=> false
irb(main):029:0> 1.instance_of?(Float)
=> false