Cloning into an object

Anybody know how to generically copy (shallow like clone) an
object into another object? It would be nice to handle the
case where the objects have a different class, but I would at
least like to know how to do it when the classes are the same.

Here is an example of what I would like to do:

dest = Object.new # or String.new if necessary
source = "hello world"
destid = dest.id

source.clone_into(dest)

dest -> "hello world"
dest.id==destid -> true
dest.class -> String

ยทยทยท

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com

Eric Mahurin <eric_mahurin@yahoo.com> writes:

Anybody know how to generically copy (shallow like clone) an
object into another object? It would be nice to handle the
case where the objects have a different class, but I would at
least like to know how to do it when the classes are the same.

Here is an example of what I would like to do:

dest = Object.new # or String.new if necessary
source = "hello world"
destid = dest.id

source.clone_into(dest)

dest -> "hello world"
dest.id==destid -> true
dest.class -> String

I hear that evil.rb has Object#become, which will do that with some
caveats. Search "Object#become" in the list archives for more info.

Eric Mahurin wrote:

Anybody know how to generically copy (shallow like clone) an
object into another object? It would be nice to handle the
case where the objects have a different class, but I would at
least like to know how to do it when the classes are the same.

Here is an example of what I would like to do:

dest = Object.new # or String.new if necessary
source = "hello world"
destid = dest.id

source.clone_into(dest)

dest -> "hello world"
dest.id==destid -> true
dest.class -> String

Is the only difference between this and Object#clone that the object_id
is the same as the old object's? Because that's all I can see here, but
I don't understand why that would come in handy.

"George Ogata" <g_ogata@optushome.com.au> schrieb im Newsbeitrag news:87zmvfx6u9.fsf@optushome.com.au...

Eric Mahurin <eric_mahurin@yahoo.com> writes:

Anybody know how to generically copy (shallow like clone) an
object into another object? It would be nice to handle the
case where the objects have a different class, but I would at
least like to know how to do it when the classes are the same.

Here is an example of what I would like to do:

dest = Object.new # or String.new if necessary
source = "hello world"
destid = dest.id

source.clone_into(dest)

dest -> "hello world"
dest.id==destid -> true
dest.class -> String

I hear that evil.rb has Object#become, which will do that with some
caveats. Search "Object#become" in the list archives for more info.

If you just want to copy state you can do without evil magic (although not working for builtins like String, Array, Fixnum etc.):

class Object
  def set_from(o)
    o.instance_variables.each do |var|
      instance_variable_set( var, o.instance_variable_get( var ) )
    end
    self
  end
end

Kind regards

    robert