11.9.5 OrderedSet

source类型是OrderedSet(T)的标准迭代器表达式是:

select(expression: OclExpression): OrderedSet(T)

body为真的source序列的有序集合。

source->select(iterator | body) =
                source->iterate(iterator; result : OrderedSet(T) = OrderedSet{} |
                    if body then result->including(iterator)
                    else result
                    endif)

select最多只有一个迭代器变量。

reject

source有序集合中body计算为假的元素组成的有序集合。

source->reject(iterator | body) = source->select(iterator | not body)

reject最多只能有一个迭代器变量。

collectNested

source有序集合中的每个成员应用body所产生的结果元素的序列。

source->collectNested(iterator | body) =
        source->iterate(iterator; result : Sequence(body.type) = Sequence{} | result->append(body ) )

collectNested最多只能有一个迭代器变量。

sortedBy(expression: OclExpression): OrderedSet(T)

产生一个包含source集合所有元素的有序集合。元素中对于body计算结果最小的排在第一位,依此类推。body表达式的类型必须定义了 < 操作。< 操作必须返回一个布尔且必须是可传递的(即,如果 a < b 且 b < c,那么有 a < c)。

source->sortedBy(iterator | body) = iterate( iterator ; result : OrderedSet(T) : OrderedSet {} |
                if result->isEmpty() then
                    result.append(iterator)
                else
                    let position : Integer = result->indexOf (
                        result->select (item | body (item) > body (iterator)) ->first() )
                    in
                        result.insertAt(position, iterator)
                endif

sortedBy最多只能有一个迭代器变量。

results matching ""

    No results matching ""