Eiffel:如何 wipe_out 一个 ARRAY 对象而不重新创建它

Eiffel: How to wipe_out an ARRAY object without recreating it

尝试做类似

的事情
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

最直接的方法是使用keep_head (n)。它只保留前 n 个项目,因此,当 n = 0 时,所有项目都被一起删除:

    a.keep_head (0)

另一种方法是使用创建程序,例如 make_empty 作为常规程序。它将把一个数组设置为新创建的数组的状态:

    a.make_empty

但是,这种方法看起来有点奇怪。它可以改变数组的 lower 索引。所以,keep_head 更可取。

注意。 ARRAYED_LISTARRAY 的一个很好的替代品:它几乎具有 ARRAY 的所有功能,更灵活,具有其他功能,其中 wipe_out