3
假設我有以下簽名的聲明,在合金4.2:隱藏字段的亞型合金
sig Target {}
abstract sig A {
parent: lone A,
r: some Target
}
sig B extends A {}
sig C extends A {}
運行時,所產生的情況下,將不得不從各個B
箭頭一些Target
,並從C
到一些Target
。
我怎樣才能隱藏B
只有箭頭?
我嘗試以下,首先:
abstract sig A {
parent: lone A
}
sig B extends A {
r: some Target
}
sig C extends A {
r: some Target
}
這會給我控制r
在B
,但是寫性能時,它引入了一個很大的模糊性。我想盡可能保持簡單。例如:以上
all a: A | a.r = parent.a.r
說a
的Targets
是集a
的兒童Targets
。
對於後者的聲明,我將不得不重寫這
all b: B | b.r = parent.b.((B <: r) + (C <: r))
all c: C | c.r = parent.c.((B <: r) + (C <: r))
這是不希望的。
是否有任何解決方法能夠有一個通用字段,但仍然可以控制顯示哪些箭頭?
謝謝恩賢,回答了我的問題。我之前做過類似的事情,使用函數來處理關係的特殊情況(例如:在圖着色問題中着色原子),但由於某種原因,只有超載出現在我的腦海裏! – afsantos 2013-04-06 17:01:20