Project

General

Profile

Bug #19259

Updated by ko1 (Koichi Sasada) over 1 year ago

Data#with` doesn't call `initialize` nor `initialize_copy`. 
 It is confirmation request. 

 ```ruby 
 class P < Data.define(:x, :y) 
   def initialize_copy(...) 
     p :initialize_copy 
     super 
   end 

   def initialize(...) 
     p :initialize 
     super 
   end 
 end 

 p pt = P.new(1, 2) 
 #=> :initialize 
 p pt.clone 
 #=> :initialize_copy 
 p pt.dup 
 #=> :initialize_copy 
 p pt.with(x: 10) 
 #=> N/A 
 ``` 

 For example, if an author of `P` add validation code, `#with` skips it.

Back