инициализировать массив с циклом в Eiffel - PullRequest
0 голосов
/ 05 июня 2018

Я так стараюсь инициализировать массив или массив списков строк из файла при использовании цикла, но каждая функция, которую я использую - поставить / ввести / заставить ничего, похоже, не работает.массив за разом заполнялся последней прочитанной строкой, несмотря на то, что я обращаюсь к определенному индексу, который я увеличиваю каждую итерацию.(Я пытался добавить обычную постоянную строку, и она работала хорошо, я не понимаю разницу.

Спасибо всем, кто помог бы.

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 голосов
/ 05 июня 2018

Функция read_line не создает новый строковый объект каждый раз, а скорее использует последний.Другими словами, last_string всегда относится к одному и тому же объекту.Решение состоит в том, чтобы использовать клон объекта, связанного с last_string на каждой итерации:

curLine := curFile.last_string.twin
...