Ruby duplicate an object with modified params -


i have ruby object say

def initialize(args={})   @name = args[:name]   ... end  my_cat = cat.new(name: 'mittenz', age: 3, type: 'cheshire') 

i need duplicate within object option input different parameter, somehting this:

class catcopyist   def initialize(args={})     @my_cat = args[:cat] # my_cat object above passed here   end    def copy_cat     another_cat = @my_cat.dup.merge(type: 'siamese')     return another_cat   end   ... end 

i need blending copied object new parameter.

you can use object#instance_variable_set override older variables.

class cat   attr_reader :name, :type, :age   def initialize(args={})     @name = args[:name]     @age = args[:age]     @type = args[:type]   end    def to_s     "#{name} (#{type} - #{age})"   end    def dup(args={})     new_cat = super()     args.each do|var, value|       new_cat.instance_variable_set(:"@#{var}", value)     end     new_cat   end end mittenz = cat.new(name: 'mittenz', age: 3, type: 'cheshire')  puts mittenz puts mittenz.dup(type: 'siamese') #=> mittenz (cheshire - 3) #   mittenz (siamese - 3) 

Comments

Popular posts from this blog

php - How to add and update images or image url in Volusion using Volusion API -

javascript - IE9 error '$'is not defined -