我一直在尝试让我的项目更具活力,所以我决定编写一个添加功能,我从他们在Alloy网站上的这个例子中获得灵感:
pred add [b, b': Book, n: Name, t: Target] {
b'.addr = b.addr + n->t
}
但我想做的是覆盖两个对象" b"和" b' " (因为我想添加到同一个对象),但我似乎无法找到一种方法。
如果有人有想法,我会感恩的
答案 0 :(得分:0)
你没有遗漏任何东西。你找不到“添加到同一个对象”的方法的原因是你不能。合金没有突变;您无法更改模型中的任何对象。
涉及变异的应用程序通常就像您在示例中对add
进行建模一样建模:两个参数显示前置状态和后置状态。在这样的模型中,任何两个Book
对象 b1 , b2 将在应用程序域中显示相同的可变Book
对象的不同状态,如果和只有当存在 n , t 时才会添加[b1,b2,n,t]。