gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:29 26 4
gpt4 key购买 nike

我尝试在 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

是否有可能拥有相同的东西,但在 Operation 类中定义 reduce,但在 Operation 中创建某个特定子类的实例类(class)?

提前致谢。

最佳答案

是的。

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

关于ruby - 是否可以从父类创建子类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34707173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com