Я пишу программу на рельсах, в которой один класс ведет себя так же, как другой класс. Единственное отличие состоит в том, что существует переменная класса @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
родительского класса, то есть Foo#secret
, но мне нужно использовать секретный номер из дочернего класса, то есть Bar#secret
.