任何人都可以告诉我如何在Ruby中初始化一个对象数组。我有班级专栏:
class Line
@@text
@@number = 0
@@file = 0
@@paired
def initialize(text, number, file = 0, paired = 1)
@@text = text
@@number = number
@@file = file
@@paired = paired
end
end
现在我希望初始化一个行数组,当我这样做
parsedLines = Array.new()
并且在
loop do parsedLines[i] = Line.new(line, number, file, 0)
我有一个数组的行,但是数组元素在最后创建的Line对象上初始化,我该如何解决这个问题,得到Line对象的数组呢?
答案 0 :(得分:2)
这就是@@
的作用。它定义了一个类级变量,由类的所有实例共享。每次声明一个新实例时,都会覆盖这些值,所以当然整个数组看起来都包含相同的对象。
在@@
方法中将@
更改为initialize
,并完全删除类级@@
变量,它们没有用处。您不需要在Ruby中以这种方式声明变量。
正确的实施方式是:
class Line
def initialize(text, number = 0, file = 0, paired = 1)
@text = text
@number = number
@file = file
@paired = paired
end
end