簡體   English   中英

在Alloy模型中使用boolean的最佳實踐

[英]The best practice to use boolean in Alloy model

我正在構建一個簡單的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”。 有沒有最好的做法呢? 就像我們Alloy為Integers做的那樣?

引入Bool sig會更好,然后將它用於所有布爾字段,例如,

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

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

在這種情況下不需要其他事實。

如果您喜歡這種方法,那么有一個內置的“util / boolean”庫,它完全像我上面那樣定義BoolTrueFalse sigs,並且還提供了一些輔助函數(比如isTrueAndOr等)。所以你可以簡單地說

open util/boolean 

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM