clone -> Set
[permalink][rdoc]dup -> Set
集合を複製して返します。
dup は、集合の内容と taint 情報のみコピーします。 clone は、それに加えて、freeze 情報と特異メソッドをコピーします。いずれも共通して、内部記憶として保持するハッシュもコピーしますが、集合の要素そのものはコピーしません。
Ruby 1.9 の Set クラスでは、dup と clone に共通して、内部記憶として用いるハッシュも含めて taint 情報をコピーします。ただし、clone では内部記憶の freeze 情報はコピーされません。このため、freeze された集合を clone した場合、生成された集合の要素は変更可能である点に注意してください。
require 'set' s1 = Set[10, 20] s2 = s1.dup s2 << 30 p s1 #=> #<Set: {10, 20}> p s2 #=> #<Set: {10, 20, 30}>
[SEE_ALSO] Object#clone