【发布时间】:2019-11-03 15:43:47
【问题描述】:
我正在尝试编写一个 Alloy 函数来检索与函数参数相关的某种类型的所有元素(让我说,它们的“字段/属性”之一具有该值)。我尝试了各种方法,都没有奏效。
有点像
fun get[a:A] : set X{
(x.name :> a)
}
但这会返回一组 A 而我想要一组 X
【问题讨论】:
标签: alloy
我正在尝试编写一个 Alloy 函数来检索与函数参数相关的某种类型的所有元素(让我说,它们的“字段/属性”之一具有该值)。我尝试了各种方法,都没有奏效。
有点像
fun get[a:A] : set X{
(x.name :> a)
}
但这会返回一组 A 而我想要一组 X
【问题讨论】:
标签: alloy
你可以更简单地做到这一点:
name.a
返回在 name 下映射到 a 中元素的 X 集合。
检查与您的版本的等效性:
sig A { }
sig X {
name: set A
}
fun get [a:A] : set X{
((X <: name) :> a).A
}
fun get' [a:A] : set X{
name.a
}
check {
all a: A | get[a] = get'[a]
}
【讨论】:
这行得通,希望对某人有用:
fun get[a:A] : set X{
((X <: name) :> a).A
}
【讨论】: