我正在编写一个程序,其中一个类与另一个类具有相同的行为。唯一的区别是有一个类变量 ,@secret_num
它在两个类之间的计算方式不同。我想调用一个特定的超类方法,但使用子类中的类变量。棘手的是类变量不是常量,所以我在它自己的方法中设置它。有什么办法可以做我在下面尝试做的事情吗?谢谢
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
方法, ie Foo#secret
,但我需要使用子类的秘密号码, ie Bar#secret
。