なかだです。

dupやcloneされたOpenStructのメンバを変更すると元のオブジェクト
まで影響を受けますが、この動作は少々疑問です。

  $ ruby -rostruct -e 'x = OpenStruct.new("a"=>1); x.dup.b=2; p x'
  <OpenStruct a=1 b=2>
  $ ruby -rostruct -e 'x = OpenStruct.new("a"=>1); x.dup.a=2; p x'
  <OpenStruct a=2>


Index: lib/ostruct.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/ostruct.rb,v retrieving revision 1.9 diff -u -2 -p -d -r1.9 ostruct.rb --- lib/ostruct.rb 19 Feb 2004 13:42:30 -0000 1.9 +++ lib/ostruct.rb 20 Feb 2004 00:49:12 -0000 @@ -53,4 +53,10 @@ class OpenStruct end + # Duplicate an OpenStruct object members. + def initialize_copy(orig) + super + @table = @table.dup + end + def method_missing(mid, *args) # :nodoc: mname = mid.id2name
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦