Eiffel: Как стереть объект ARRAY, не создавая его заново - PullRequest
0 голосов
/ 28 сентября 2018

Попытка сделать что-то вроде

a: ARRAY[STRING]

create a.make_empty
a.put("foo foo fool")
a.wipe_out

Должен ли я?или есть другой способ, поскольку STRING, похоже, не имеет .has_default

create a.make_empty
a.put("foo foo fool")
create a.make_empty

compilation error

1 Ответ

0 голосов
/ 28 сентября 2018

Самый простой способ - использовать keep_head (n).Он сохраняет только первые n элементов, поэтому, когда n = 0, все элементы удаляются в целом:

    a.keep_head (0)

Другой способ - использовать процедуру создания, например, make_empty как обычную.,Он собирается установить массив в состояние только что созданного:

    a.make_empty

Однако этот подход выглядит немного странным.И это может изменить lower индекс массива.Итак, keep_head предпочтительнее.

Примечание. ARRAYED_LIST - хорошая альтернатива ARRAY: он обладает почти всеми функциями ARRAY, более гибок, имеет другиеособенности, и wipe_out среди них.

...