埃菲尔铁塔:如何在不重新创建对象的情况下擦除ARRAY对象

时间:2018-09-28 17:24:15

标签: arrays eiffel

尝试做类似的事情

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 :(得分:1)

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

    a.keep_head (0)

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

    a.make_empty

但是,这种方法看起来有些奇怪。并且它可以更改数组的lower索引。因此,keep_head是可取的。

注意。ARRAYED_LISTARRAY的一个很好的选择:它几乎具有ARRAY的所有功能,更加灵活,具有其他功能,并且{ {1}}。