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
真偽値のクラスを確認する
真偽値(true
/false
)のクラスを以下のプログラムで確認します。TrueClass
、FalseClass
が表示されます。
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
真偽値クラスの親クラスを確認する
以下のプログラムで真偽値クラス(TrueClass
/FalseClass
)の親クラスを確認します。いずれも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