假设我在合金 4.2 中有以下签名声明:
sig Target {}
abstract sig A {
parent: lone A,
r: some Target
}
sig B extends A {}
sig C extends A {}
运行时,生成的实例将具有从 everyB到 someTarget和 fromC到 some的箭头Target。
我怎么能只隐藏箭头B?
起初,我尝试了以下方法:
abstract sig A {
parent: lone A
}
sig B extends A {
r: some Target
}
sig C extends A {
r: some Target
}
这将使我能够控制rin B,但是在编写属性时会引入很多歧义。我想让这些尽可能简单。例如:
all a: A | a.r = parent.a.r
上面说a'sTargets是a'children's的集合Targets。
对于后面的声明,我将不得不将其重写为
all b: B | b.r = parent.b.((B <: r) + (C <: r))
all c: C | c.r = parent.c.((B <: r) + (C <: r))
这是不可取的。
是否有任何解决方法可以拥有一个通用字段,但仍然可以控制显示的箭头?