当前位置:  开发笔记 > 后端 > 正文

可以从父类创建子类的实例吗?

如何解决《可以从父类创建子类的实例吗?》经验,为你挑选了1个好方法。

我尝试在Ruby中定义操作语义,仅用于学习目的.我想定义一些操作:add,multiply,subtraction,division.

这是代码:

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

是否有可能有相同的东西,但reduceOperation类中定义,但在类中创建一些特定子类的实例Operation

提前致谢.



1> sawa..:

是.

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

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有