From: "matz (Yukihiro Matsumoto)" Date: 2013-10-30T17:38:46+09:00 Subject: [ruby-core:58074] [ruby-trunk - Feature #9060][Rejected] "Assignment" operator overloading Issue #9060 has been updated by matz (Yukihiro Matsumoto). Status changed from Open to Rejected I am not sure what you want. Could you elaborate? Doesn't defining regular method like #update do for you? class Foo def update(obj) @data = obj.data end attr_accessor :data end class Bar < Foo end f = Foo.new b = Bar.new .... f.update(b) Reopen if you have objection. Matz. ---------------------------------------- Feature #9060: "Assignment" operator overloading https://bugs.ruby-lang.org/issues/9060#change-42654 Author: popoxee (Bruce Metz) Status: Rejected Priority: Normal Assignee: Category: Target version: I understand assignment in ruby is assigning an object to the variable. However there are other cases we need to use assignments. For example: (({class Foo end class Bar < Foo end f = Foo.new b = Bar.new //Some operations on b})) Now we want f to contain the same data as b. But if we use f = b, f will not be Foo any more. Or we can define a method like ((*Foo##loadFromBar*)), but Foo is the super class of Bar and usually defined before Bar... Can we have something like: (({f := b})) so that f will have the same shared data with b? And we can even load data from other classes by overloading this operator: (({class Foo def :=(f) @data = f end end f = Foo.new f := 2.2})) We can always achieve this by defining a named method, but this operator can provide some syntax sugar and convenience. -- http://bugs.ruby-lang.org/