オブジェクトを複製する
オブジェクトを複製するにはObject#dup
かObject#clone
を使う。Object#clone
はオブジェクトの内容だけでなく特異メソッドなどもコピーする。一般的にはObject#dup
で十分だ。以下は文字列を複製する例である。
str = "sample string" def str.singleton_method; end str.taint str.freeze p str #=> "sample string" p str.respond_to?(:singleton_method) #=> true p str.tainted? #=> true p str.frozen? #=> true str2 = str.dup p str2 #=> "sample string" p str2.respond_to?(:singleton_method) #=> false p str2.tainted? #=> true p str2.frozen? #=> false str3 = str.clone p str3 #=> "sample string" p str3.respond_to?(:singleton_method) #=> true p str3.tainted? #=> true p str3.frozen? #=> true