在Eiffel中使用循环初始化数组

时间:2018-06-05 16:39:56

标签: eiffel

我正在努力在使用循环时从文件初始化字符串的数组或arrayList,但我正在使用的每个函数 - put / enter / force似乎都没有用。尽管我正在访问我增加每次迭代的特定索引,但是数组一次又一次地填充了我读取的最后一个字符串。 (我试图添加常规常量字符串,但效果很好,我不明白其中的区别。

感谢所有愿意提供帮助的人。

tArray:ARRAY[STRING] -- declaring
create tArray.make_empty

readingFile() --function
local
    k:INTEGER_32
do
    from k:=0
    until curFile.end_of_file
    loop
        curFile.read_line
        curLine:=curFile.last_string
        tArray.force (curLine, k)
        --tArray.put(curLine, k)
        --tArray.enter (curLine, k)
        --tArray.at (k):=curLine
        --tArray.force ("sara", k+1)
        k:=k+1
    end
end

1 个答案:

答案 0 :(得分:0)

功能read_line不会每次都创建一个新的字符串对象,而是重用最后一个。换句话说,last_string总是指同一个对象。解决方案是在每次迭代时使用与last_string关联的对象的克隆:

curLine := curFile.last_string.twin