저는 잠시 동안 합금을 사용하지 않았지만 원하는 방식으로 가능하지 않다고 생각합니다. 그러나 모델에서 하나의 위치 만 조합을 리팩터링 할 수 있습니다. 예 :
sig Test {}
one sig A, B extends Test {}
fun Remainder : set Test {
Test - (A+B)
}
run { some Remainder } for 5
당신은이 기본 유형에서 모든 하위 유형의 조합을 빼서 정의, 여기 Remainder
라는 기능을 사용하여 관계를 정의합니다.
모델에 새로운 하위 유형을 추가 할 때마다 Remainder
의 정의에 추가해야한다는 것을 잊지 마세요.
모델 전반에 걸쳐, 당신은 단지 내가 run
명령에 익명의 조건에서 사용되는 것처럼, 모든 순수Test
원자를 얻기 위해 Remainder
를 참조 할 수 있습니다.
abstract sig Test {}
sig Remainder extends Test {}
one sig A, B extends Test {}
이것은 Remainder
가 Test - (A + B)
에 해당되는으로, 세 개의 하위 집합으로 Test
원자의 집합을 분할합니다 :
명백한 :
예컨대, 당신은 뭔가를 할 수 있습니다! 고마워, 은숙. –