Function 如何为Alloy中的函数返回单个值?
在合金的功能上找到好的资源有很多困难。我成功地创建了一个返回一组值的函数(即有一个“set”返回类型),但我不知道如何编写一个返回单个值的函数。我我有Function 如何为Alloy中的函数返回单个值?,function,return-value,alloy,Function,Return Value,Alloy,在合金的功能上找到好的资源有很多困难。我成功地创建了一个返回一组值的函数(即有一个“set”返回类型),但我不知道如何编写一个返回单个值的函数。我我有 open util/ordering[Time] // enforces total order on Time sig Time {} // instances denote timestamps sig File { time : Time // every file has
open util/ordering[Time] // enforces total order on Time
sig Time {} // instances denote timestamps
sig File {
time : Time // every file has exactly one timestamp
}
fun getTime[F : set File] : Time {
{one t : Time | some f : F | all g : F | f.time = t && gte[f.time,g.time]}
}
函数getTime接受一组文件并返回最近的文件戳(F中所有文件的最大时间属性)
然而,无论我以何种方式编写它,我都会不断地得到错误的返回类型(原始布尔)错误或其他错误。如何返回时间类型的内容 由于关键字one,您将得到一个布尔返回类型。当且仅当只有一个时间t满足以下谓词时,此量词强制返回true 如果没有任何量词,函数中的表达式将是我们称之为集合理解的表达式,也就是说,每次返回满足以下谓词的原子时,都会返回一个集合
fun getTime[F : set File] : Time {
{t : Time | some f : F | all g : F | f.time = t && gte[f.time,g.time]}
}