【发布时间】:2015-05-29 01:17:21
【问题描述】:
我想知道如何正确初始化子类“计算机”。我希望它继承Game类中initialize中的属性,除了#start,它是一个方法。在这种情况下,我也不确定如何处理初始化方法中的参数。有谁知道一个优雅的方式来改写它?谢谢。
class Game
attr_reader :input, :clues
def initialize
colors = %w(R O Y G I V)
code = []
all = ''
count = 0
start
end
def start
...
end
def ask_input
...
end
class Computer < Game
attr_reader :input, :clues
def initialize
colors = %w(R O Y G I V)
code = []
all = ''
count = 0
ask_input
computer_turn
end
.....
end
【问题讨论】:
-
一种方法——甚至不要在
initialize中这样做,而是定义一个自定义设置器,例如def colors; @colors ||= %w(R O Y G I V); end在Game上,然后将在Computer中提供。 -
虽然我通常建议将您的变量重组为自定义 setter 方法以便更清晰地继承,但请参阅this question 以获取问题的答案。
标签: ruby inheritance initialization subclass super