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
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.
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