Issue #12300 has been updated by Shyouhei Urabe.


Sounds much simpler than the previous one to understand what is happening.  Also it seems backwards-compatible.

Given the needs of this kind, I'd like to +1.  

----------------------------------------
Feature #12300: Allow Object#clone to take freeze: false keyword argument to not freeze the clone
https://bugs.ruby-lang.org/issues/12300#change-58159

* Author: Jeremy Evans
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
This allows Object#clone to not freeze the resulting object, which fixes a long standing problem in ruby in that you cannot get an unfrozen copy of an object that includes a copy of the object's singleton class. Previously, clone always returned a frozen object, and dup did not copy the singleton class.  This adds the ability to get an unfrozen clone of an object that includes a copy of the object's singleton class, allowing further modification.

Among other things, this allows the ability to create modified clones of objects that have singleton classes:

~~~
class A
  def clone(arg)
    obj = super(freeze: false)
    # modify obj based on arg
    obj.freeze
  end
end
~~~

I think this is a simpler and more flexible approach to the same problem that #12092 tries to solve.

---Files--------------------------------
0001-Allow-clone-to-take-freeze-false-keyword-argument-to.patch (3.93 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>