我正在构建一个简单的 Alloy 来生成简单的 Java Pojo 对象,并且该 pojo 的某些字段是布尔值。我现在使用以下机制来实现这个功能
one sig item {
autoPay: String,
Price: Int
}
fact boolean {
all n: item {
item.autoPay = "true" or
item.autoPay = "false"
}
}
这会起作用,但每次我引入一个新的布尔字段时,我都必须修改布尔事实以确保该值是“true”或“false”。有没有最佳实践可以做到这一点?就像我们合金对整数所做的那样?
最好引入 Bool sig,然后将其用于所有布尔字段,例如,
abstract sig Bool{}
one sig True extends Bool
one sig False extends Bool
one sig item {
autoPay: Bool,
Price: Int
}
在这种情况下不需要额外的事实。
如果您喜欢这种方法,有一个内置的“util/boolean”库,它定义了Bool
, True
, and False
sigs 与我上面所做的完全一样,并且还提供了一些辅助函数(例如isTrue
, And
, Or
等)所以你可以简单地说
open util/boolean
one sig item {
autoPay: Bool,
Price: Int
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)