我正在研究一个继承自的 Grid 类Matrix
:
class Grid < Matrix
def self.[](x,y=x)
if x.is_a? String
ary = x.lines.map { |l| l.strip.split('|') }.map.with_index do |col,x|
col.map.with_index { |cell,y| ::Cell.new x: x, y: y, alive: !!(cell =~ /O/i) }
end
super *ary
else
super *Array.new(y) { [::Cell.new(x: x, y: y, alive: [true,false].sample)] * x }
end
end
end
我似乎无法覆盖::initialize
,因为它是私人的。以上工作但产生Matrix
类的实例而不是我的自定义类,所以我被卡住了。意识到我的班级在调用to_s
和接收"Matrix[[X,O],[O,O]]"
东西时没有实例化。我错过了什么?