7.6.4 Exists操作

许多情况下我们需要知道对于某个约束是否集合中至少有一个元素满足。OCL中的exists操作允许我们指定在某个集合中至少一个对象需要满足的布尔表达式:

collection->exists(v: Type | boolean-expression-with-v)
collection->exists(v | boolean-expression-with-v)
collection->exists(boolean-expression)

exists操作产生一个布尔值。如果collection中至少一个元素满足boolean-expression-with-v,则该结果为真。如果集合中所有元素的boolean-expression-with-v都为假,则整个表达式的结果为假。举个例子,在一个公司上下文中:

context Company inv:
    self.employee->exists(forename='Jack')
context Company inv:
    self.employee->exists(p | p.forename='Jack')
context Company inv:
    self.employee->exists(p: Person | p.forename='Jack')

如果至少有一个员工的forename属性值为‘Jack’,则上述这些表达式结果为真。

与forAll表达式类似,exists表达式也可以声明多个迭代器。

results matching ""

    No results matching ""