halostatue wrote:
> On 11/16/05, Eric Mahurin <eric.mahurin / gmail.com> wrote:
>> object into a strange state.
> Obviously, I wasn't clear. I said "At a simplistic level, this is:" ...
> This means that this is *essentially* what the operation would do, but
> not necessarily the full scope of what would be needed. A more "safe"
> operation would be:
> 
>   class Object
>     def replace(other)
> 	  unless other.class == self.class
> 		raise TypeError,
> 		  "cannot convert #{self.class} into #{other.class}"
> 	  end
>       other.instance_variables.each do |name|
>         instance_variable_set(name,
>             other.instance_variable_get(name))
>       end
> 	end
>   end
> 
> This is, by the way, exactly what:
> 
>   a = {}
>   b = []
>   b.replace a
> 
> does. [snip]

What if the receiver of #replace has instance variables that don't exist 
in the parameter?  Do you intend for them to go away?  If they don't, 
you could break code that uses
    if @instancevar ...

Doing so would require getting both sets of instance variables etc...

-- 
Posted via http://www.ruby-forum.com/.