このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.1 リファレンスマニュアル

instance method Object#dup

dup -> object[permalink][rdoc][edit]

オブジェクトの複製を作成して返します。

dup は、オブジェクトの内容と taint 情報をコピーします。 Object#clone と異なり、freeze の状態や特異メソッドはコピーされません。

浅いコピー・複製の詳細は Object#clone を参照してください。

obj = "string"
obj.taint
def obj.fuga
end
obj.freeze

p(obj.equal?(obj))          #=> true
p(obj == obj)               #=> true
p(obj.tainted?)             #=> false
p(obj.frozen?)              #=> true
p(obj.respond_to?(:fuga))   #=> true

obj_d = obj.dup

p(obj.equal?(obj_d))        #=> false
p(obj == obj_d)             #=> true
p(obj_d.tainted?)           #=> false
p(obj_d.frozen?)            #=> false # clone と異なり freeze はコピーされない
p(obj_d.respond_to?(:fuga)) #=> false # 特異メソッドもコピーされない

[SEE_ALSO] Object#initialize_copy, Object#initialize_dup, Object#clone