Search code examples
rubyconstructorinitializer

How to call one initializer from another in Ruby?


How to DRY the following code and call the first initializer from the second?

class DataStream

  attr_reader :asset
  attr_reader :data

  def initialize(asset)
    @asset = asset
    @data = Array.new
  end

  def initialize(asset, values)
    @asset = asset
    @data = Array.new
    values.each do |value|
      add_value(value)
    end
  end

end

Solution

  • Use default arguments:

    def initialize(asset, values = [])
      @asset = asset
      @data = Array.new
      values.each do |value|
        add_value(value)
      end
    end