dup
以下はテストケースです。私はメソッドで何かをしようとしていました。しかし、私はこの奇妙な振る舞いに気づきました。合理的な説明が見つかりませんでした。
class ObjectIdTest
attr_accessor :x, :y
def initialize
@x, @y = 1, 2
end
def object_ids
"x:#{@x.object_id}, y: #{@y.object_id}"
end
end
class ObjectIdTestChild < ObjectIdTest
attr_accessor :z
def initialize
@z = 3
end
def object_ids
super + " z: #{@z.object_id}"
end
end
oid1 = ObjectIdTest.new
oid2 = ObjectIdTestChild.new
p oid2.object_ids
oid3 = oid2.dup
p oid3.object_ids
出力: "x:4、y:4 z:7"
「x:4、y:4 z:7」
- 通常、オブジェクトIDは長くなります(70322728590900など)。なぜこれらは非常に小さいのでしょうか。(彼らは親戚ですか、それともそのようなものですか?)
- x 'sとy 'sのオブジェクトIDが同じなのはなぜですか?
- oid2とoid3のインスタンス変数が同じオブジェクトIDを持つのはなぜですか?