Давайте посмотрим на комментарии функций, которые используются в исходном примере:
LIST.put (v: like item)
: заменить текущий элемент на v
. LIST.start
:Переместить курсор в первую позицию. LIST.forth
: перейти в следующую позицию.
Вновь созданный список пуст.Поэтому нет элементов, которые можно заменить, позвонив по номеру put
.Это объясняет, почему отладчик останавливается на функции put
: предварительное условие функции нарушено.
Если посмотреть на интерфейсное представление класса LIST
, в нем есть пункт функции Element change
со следующимОсобенности:
append (s: SEQUENCE [G])
: Добавить копию s
. extend (v: G)
: Добавить новое вхождение v
. fill (other: CONTAINER [G])
: Заполнить как можно больше элементов other
. force (v: like item)
: добавить v
в конец. put (v: like item)
: заменить текущий элемент на v
. sequence_put (v: like item)
: добавить v
в конец. put_i_th (v: like item; i: INTEGER_32)
: поставить v
в i
-й позиции. replace (v: G)
: заменить токitem by v
.
Поскольку речь идет о функции добавления нового элемента в конец списка, подходят только следующие: extend
, force
, sequence_put
. имя идиоматической функции для этого случая равно extend
.
. Учитывая это, исходный цикл становится:
from
i := 0
until
i = 11
loop
list.extend (i)
i := i + 1
end