gpt4 book ai didi

ruby-on-rails - Ruby 从父类调用子方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:14 26 4
gpt4 key购买 nike

我正在用 Rails 编写一个程序,其中一个类与另一个类具有相同的行为。唯一的区别是有一个类变量 @secret_num,它在两个类之间的计算方式不同。我想调用一个特定的父类(super class)方法,但使用子类中的类变量。棘手的是类变量不是常量,所以我在它自己的方法中设置它。有什么办法可以做我在下面尝试做的事情吗?谢谢

Class Foo
def secret
return [1,2,3].sample
end

def b
@secret_num = secret
... # lots of lines of code that use @secret_num
end
end

Class Bar < Foo
def secret
return [4, 5, 6].sample
end

def b
super # use @secret_num from class Bar.
end
end

这不起作用,因为对 super 的调用还调用了父类的 secret 方法,即 Foo#secret,但我需要使用子类的 secret 号码,即 Bar#secret

最佳答案

class Foo
def secret
[1,2,3].sample
end

def b(secret_num = secret)
<lots of lines of code that use secret_num>
end
end

class Bar < Foo
def secret
[4, 5, 6].sample
end
end

请注意,您不需要将 secret 作为参数传递给 b。只要您不在子类中重新定义 b,继承就会负责调用 secret 的正确实现。

我更喜欢将它作为参数,这样我就可以在测试中传递各种值。

关于ruby-on-rails - Ruby 从父类调用子方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478499/

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