Ruby 是否可以从父类创建子类的实例?
我试图在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
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
对