2
我正在用rails編寫一個程序,其中一個類與另一個類具有相同的行爲。唯一的區別是有一個類變量,@secret_num
,這兩個類之間的計算方式不同。我想調用特定的超類方法,但使用子類中的類變量。棘手的是,類變量不是一個常量,所以我將它設置在自己的方法中。有什麼辦法可以做到我在下面試圖做的事情? 感謝父類的Ruby調用子方法
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
。
它是否必須是類變量?怎麼樣一個屬性? – waldrumpus
FWIW,正如所選的答案所示,您不需要在方法聲明中使用顯式的return語句。 Ruby將自動返回方法中的最後一條語句。 –