The best practice to use boolean in Alloy model

本秂侑毒 提交于 2019-12-10 15:19:27

问题


I'm building a simple Alloy to generate simple Java Pojo objects and some fields of that pojo are Boolean values. I'm now using the following mechanism to achieve this function

one sig item {
    autoPay: String,
    Price: Int
}

fact boolean {
    all n: item {
        item.autoPay = "true" or
        item.autoPay = "false"
    } 
}

This will work but everytime I introduced a new boolean field I have to modify the boolean fact to make sure the value to be either "true" or "false". Is there any best practice to do this? Like what we Alloy does for Integers?


回答1:


It would be much better to introduce a Bool sig, and then use it for all your boolean fields, e.g.,

abstract sig Bool{}
one sig True extends Bool
one sig False extends Bool

one sig item {
  autoPay: Bool,
  Price: Int
}

No additional fact is needed in this case.

If you like this approach, there is a built-in "util/boolean" library which defines Bool, True, and False sigs exactly like I did above, and additionally provides some helper functions (like isTrue, And, Or, etc.) so you can simply say

open util/boolean 

one sig item {
  autoPay: Bool,
  Price: Int
}    


来源:https://stackoverflow.com/questions/18752094/the-best-practice-to-use-boolean-in-alloy-model

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!