Ruby 是否可以从父类创建子类的实例?

Ruby 是否可以从父类创建子类的实例?,ruby,inheritance,Ruby,Inheritance,我试图在Ruby中定义操作语义,只是为了学习。我想定义一些运算,比如:加,乘,减,除 以下是代码: class Operation < Struct.new(:left, :right) def inspect "#{self}" end def reducible? true end end class Add < Operation def to_s "#{left} + #{right}" end def reduce

我试图在Ruby中定义操作语义,只是为了学习。我想定义一些运算,比如:加,乘,减,除

以下是代码:

class Operation < Struct.new(:left, :right)
  def inspect
    "#{self}"
  end

  def reducible?
    true
  end 
end

class Add < Operation
  def to_s
    "#{left} + #{right}"
  end

  def reduce
    if left.reducible?
      Add.new(left.reduce, right)
    elsif right.reducible?
      Add.new(left, right.reduce)
    else
      Number.new(left.value + right.value)
    end
  end

end

class Multiply < Operation
  def to_s
    "#{left} * #{right}"
  end

   def reduce
    if left.reducible?
      Multiply.new(left.reduce, right)
    elsif right.reducible?
      Multiply.new(left, right.reduce)
    else
      Number.new(left.value + right.value)
    end
  end
end
是否可以拥有相同的东西,但在操作类中定义reduce,但在操作类中创建某个特定子类的实例

提前谢谢。

是的

class Operation
  def reduce
    if left.reducible?
      self.class.new(left.reduce, right)
    elsif right.reducible?
      self.class.new(left, right.reduce)
    else
      Number.new(left.value + right.value)
    end
  end
end