如何在前提条件下迭代数组?

时间:2017-11-23 15:29:53

标签: eiffel

我想在前提条件下迭代数组。 但似乎前提条件部分不允许使用"来自" "跨越"语法。

有没有办法在前置条件下迭代数组?

insert_last (s: STRING)
require
    new_is_longer_than_prevs:
-- here I want to iterate through array "arr" and if length of s is longer than all other previously stored string values in array
do
    arr.force (s, arr.upper + 1)
end

1 个答案:

答案 0 :(得分:1)

你可以在前提条件和后置条件中使用'跨...作为......所有......结束'或'跨...作为......一些......结束'。如果条件为每次迭代为True,则使用'all'版本进行有效,如果条件为True至少一次迭代,则使用'some'版本进行有效。你可以在你的代码中使用这样的东西:

insert_last (s: STRING)
    require
        new_is_longer_than_prevs: 
            across arr.lower |..| arr.upper as la_index all s.count > arr[la_index.item].count end
    do
        arr.force (s, arr.upper + 1)
    end