覆盖Alloy中的对象

时间:2016-12-06 08:20:41

标签: alloy

我一直在尝试让我的项目更具活力,所以我决定编写一个添加功能,我从他们在Alloy网站上的这个例子中获得灵感:

pred add [b, b': Book, n: Name, t: Target] {
  b'.addr = b.addr + n->t 
}

但我想做的是覆盖两个对象" b"和" b' " (因为我想添加到同一个对象),但我似乎无法找到一种方法。

如果有人有想法,我会感恩的

1 个答案:

答案 0 :(得分:0)

你没有遗漏任何东西。你找不到“添加到同一个对象”的方法的原因是你不能。合金没有突变;您无法更改模型中的任何对象。

涉及变异的应用程序通常就像您在示例中对add进行建模一样建模:两个参数显示前置状态和后置状态。在这样的模型中,任何两个Book对象 b1 b2 将在应用程序域中显示相同的可变Book对象的不同状态,如果和只有当存在 n t 时才会添加[b1,b2,n,t]。