Objectクラスとは
オブジェクトのID
オブジェクトに割り当てられている重複しない整数を取得する。
a = "foo" a.object_id => 70209846794980 a.__id__ => 70209846794980
同じリテラルであってもオブジェクトが異なれば、IDは異なる。
TureClass,FalseClass,NilClass,Symbol,Fixnumクラスのインスタンスは
同じリテラルの場合、同じオブジェクトとなるため、同じオブジェクトIDとなる 。
"a".object_id => 70209851930080 "a".object_id => 70209847105660 # 異なるID :a.object_id => 350888 :a.object_id => 350888 # 同じID
オブジェクトの比較
オブジェクトの比較には下記のメソッドを使用
- eql? => hashキーが同じ場合、true
- equal? => オブジェクトIDが同じ場合、true
上記、比較メソッドはクラスによって挙動が異なる。
Stringクラスではeql?は値比較になる
a = "foo" b = "foo" a.eql?(b) => true
メソッド一覧の確認
以下に書きました。
Rubyでメソッド一覧、継承クラス一覧、includeしたモジュールを確認するメソッドたち - 気軽に楽しくプログラムと遊ぶ
オブジェクトの複製
オブジェクトの複製には下記のメソッドを使用
インスタンス変数にアクセスする
オブジェクトのインスタンス変数にアクセスするには下記のメソッドを使用
- instance_variable_get (インスタンス変数を取得)
- instance_variable_set (インスタンス変数を設定)
- instance_variables (インスタンス変数の一覧)
class Foo def initialize @hoge = 1 end end f = Foo.new f.instance_variables => [:@hoge] f.instance_variable_get(:@hoge) => 1 f.instance_variable_set(:@hoge, 2) => 2 f.instance_variable_get(:@hoge) => 2
次はModuleクラスについてまとめます。