【问题标题】:Count the occurrences of a boolean operation计算布尔运算的出现次数
【发布时间】:2019-07-23 08:23:19
【问题描述】:

我必须制定一个 OCL 规则,说两个参数不能相等。我不能使用not(),所以我必须证明param1 = param2之类的东西是空的。

我尝试使用isEmpty()size(),但由于是boolean,这些运算符不起作用

self.ab1.ab2
->forAll(x | x.b1.b2
->forAll(port | (self.param1 = port.param2)->isEmpty())

 )

我想我必须使用某种需要等于 0 的 count() 运算符来表明 param1 和 param2 不同,但我不知道如何使用它。

感谢您的帮助

【问题讨论】:

    标签: uml ocl


    【解决方案1】:

    对于您的直接问题,使用<>self.param1 <> port.param2 似乎是合适的。然而,在某些情况下开始做一个双重嵌套的 forAll 似乎没有帮助。如果您无法将“约束”移至更好的上下文,也许您至少可以通过以下方式更清楚: self.ab1.ab2.b1.b2.param2->asSet()->excludes(self.param2)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多