当飞机接近机场着陆时,飞机的进近程序被划分为过渡。每次过渡都包含一组腿。
sig Transition {
legs: set Leg
}
sig Leg {}
转换中的一组腿是有序的。对于每次转换,我希望能够访问转换中的第一条腿,转换中的最后一条腿,并且我想在转换中从一条腿到另一条腿进行导航。因此,我想要第一个,最后一个和下一个函数。
实现这个的最简单方法是什么?我有一个实现工作,但我想知道是否有更简单的东西。我的实现将每个Leg与序列号相关联:
open util/ordering [SequenceNumber]
sig SequenceNumber {}
sig Transition {
legs: Leg one -> one SequenceNumber
}
然后我创建了自己的实用程序函数:
fun First (t: Transition): Leg {
t.legs.(min [Leg.(t.legs)])
}
fun Last (t: Transition): Leg {
t.legs.(max [Leg.(t.legs)])
}
fun Next (t: Transition, leg: Leg): Leg {
t.legs.(next [leg.(t.legs)])
}
我希望你能告诉我一个更简单的解决方案。
答案 0 :(得分:1)
为什么不使用seq Leg
和内置序列谓词&功能