在合金模型中使用布尔值的最佳实践

2024-01-06

我正在构建一个简单的 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 Falsesigs 与我上面所做的完全一样,并且还提供了一些辅助函数(例如isTrue, And, Or等)所以你可以简单地说

open util/boolean 

one sig item {
  autoPay: Bool,
  Price: Int
}    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在合金模型中使用布尔值的最佳实践 的相关文章

  • 如何在单击按钮时发送 wp_mail?

    我正在我的 WordPress 插件中构建一个选项页面 我有一个包含收件人 发件人 主题和消息以及保存和发送按钮的表单 这个想法是您填写收件人 发件人 主题和消息 单击 保存 然后单击 发送 发送消息 我在尝试在单击按钮时运行发送功能时遇到
  • 解析 Chrome 书签 Json 文件:Java

    目前我正在使用 netbeans IDE 我尝试使用其他解决方案 但到目前为止没有运气 问题是 我在尝试时遇到错误读取Json文件来自谷歌 Chrome 书签文件 C Users Admin AppData Local Google Chr
  • 如何向 Mule 有效负载添加附加数据?

    我正在尝试将一些额外的静态数据添加到入站 http 消息 作为 URL 参数接收 有效负载 然后将其提交到基于出站 http 表单的端点 我的骡子配置如下
  • 能否以编程方式获取运行 Android 6.0+ 的设备的 MAC 地址?

    能否以编程方式获取运行 Android 6 0 的设备的 MAC 地址 根据this https developer android com about versions marshmallow android 6 0 changes ht
  • 使用 OpenLayers 5 显示地理参考图像

    我正在尝试制作一个应用程序 用户可以在其中对扫描地图进行地理配准 您可以在此处查看示例 https codesandbox io s 2o99jvrnyy https codesandbox io s 2o99jvrnyy有两个图像 资产
  • #import 和 @class 之间有什么区别,什么时候应该使用其中之一?

    在过去的一个月左右的时间里 我一直在自学 Objective C 我是一名 Java 专家 现在我的大脑已经掌握了其中的大部分内容 目前让我感到困惑的一件事是 通过 class 导入类与 import 导入类有什么区别 一种比另一种更好 还
  • 如何减少Kafka主题的分区数量?

    我在 Kafka 上创建了一个具有 4 个分区的主题 默认设置number partition 4 现在我想将这个主题的数字分区更改为3 我尝试过跑步 bin kafka topics sh alter zookeeper localhos
  • 使用枚举描述绑定组合框

    我通过 Stackoverflow 发现有一种简单的方法可以用枚举填充组合框 cbTipos DataSource Enum GetValues typeof TiposTrabajo 就我而言 我为我的枚举定义了一些描述 public e
  • 如何捕获屏幕的一部分

    我正在使用 win32 PrintWindow 函数将屏幕捕获到 BitMap 对象 如果我只想捕获窗口的一部分区域 如何裁剪内存中的图像 这是我用来捕获整个窗口的代码 System Runtime InteropServices DllI
  • 有没有办法在 C# 中抑制警告,类似于 Java 的 @SuppressWarnings 注释?

    有没有办法在 C 中抑制警告 类似于 Java 的 SuppressWarnings 注释 如果做不到这一点 是否有另一种方法可以抑制 Visual Studio 中的警告 Yes 如需禁用 请使用 pragma warning disab

随机推荐

  • Python:文件中的反斜杠(\u...)

    我有一个包含 u 格式的 unicode 字符的文件 我想将它们作为普通的 unicode 字符串写入另一个文件 但我无法将反斜杠解释为转义字符 所以我把它放在一个文件中 例如 u1203 u1208 u1208 u0074 u00E4 u
  • C++ 类函数应该以 } 结尾吗?或者只有一个}?

    关于 C 语法的基本问题 C 函数应该以 结尾吗 或者没关系 或者这两个例子有什么区别 有结局 void Test print 没有 void Test print 我见过有或没有的 C 代码 但我不明白有什么区别 Thanks Updat
  • 如何将 xsd 转换为人类可读的文档? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们有一些基于 XML 的接口 这些接口在 XSD 模式中得到了很好的记录 这些接口现在将公开 我们希望为它们创建参考文档 有没有一个工具
  • java 8 中删除 JDBC ODBC 桥

    从 Java 8 开始 JDK 将不再包含 JDBC ODBC Bridge Class forName sun jdbc odbc JdbcOdbcDriver classNotFoundException is thrown 还有其他连
  • 在 PictureBox 中绘制火车时,C# 中出现内存不足异常

    我正在尝试创建一个应用程序来显示在线火车picturebox 所以为了实现这个我创建了一个worker thread为了获得在线火车位置 所以我定义了线程 如下所示 private Thread workerThread null priv
  • 应如何实施电子邮件地址选择加入?

    设想 用户给您一个电子邮件地址 在他们注册服务之前 他们需要验证电子邮件地址 您通过电子邮件发送一个 URL 他们单击它 然后他们就可以订阅服务 问题 网址是什么样的 我认为随机指南就可以了 您是否使用相同的随机密钥来取消订阅请求 我应该考
  • boost 正则表达式中的链接器错误

    我想了解有关 boost lib 中的正则表达式的一些知识 我尝试编译这个简单的示例代码 regex search example include
  • Scala 2.10.1 中新的脱糖行为

    假设我有这个单子类 case class Foo A xs List A def map B f A gt B Foo xs map f def flatMap B f A gt Foo B Foo xs flatMap f andThen
  • 使用 App Engine SDK 进行并行模块部署

    TL DR 有没有办法并行部署 App Engine 模块 我使用 Google 构建了一个 go 应用程序适用于 Go 的 App Engine SDK https cloud google com appengine downloads
  • Async Await 等待所有结果并继续

    我对如何实现异步等待方法并在继续之前等待结果有点困惑 我想并行对后端进行 3 次调用 并等待它们响应 然后获取结果并在内部分配它们 像这样的事情 Private Sub GetParseExpressionResults If Not is
  • iOS Core Data:将获取请求的结果转换为数组

    我正在尝试将获取请求的结果放入数组中 我的代码 let appDelegate UIApplication sharedApplication delegate as AppDelegate let managedContext appDe
  • 在 PostgreSQL 中提取 xml 标签的值

    下面是我的 Postgres 表的列响应 我想从 Postgres 数据库中的所有行中提取状态 状态的大小可能不同 例如SUCCESS所以我不想使用子字符串函数 有办法做到吗
  • 实时显示 Google Analytics 数据

    我想显示自本月初以来网站上的访问者数量 当天和当前在网站上的用户数量 我安装了 Google Analytics 我尝试通过从开发人员控制台启用 Google Analytics API 来使用嵌入 API 来解决此问题 但我需要用户授权等
  • ES6模块的“导入”正式兼容CommonJS和AMD?

    从这篇文章 https hacks mozilla org 2015 08 es6 in deep modules https hacks mozilla org 2015 08 es6 in depth modules 文中写道 新标准旨
  • iPhone如何自动插入小数位?

    我知道过去曾多次问过这个问题 但我尝试的一切都失败了 我有一个带有 UILabel 的自定义数字键盘 当我点击 1 时 UILabel 显示一个 1 现在这就是我想做的 当我点击 1 按钮时 我想要 UILabel 中的 0 01 接下来是
  • 这是什么意思? “解析错误:语法错误,意外的 T_PAAMAYIM_NEKUDOTAYIM”

    T PAAMAYIM NEKUDOTAYIM 听起来确实很异国情调 但对我来说绝对是胡说八道 我将其全部追溯到这行代码 在构造函数中我创建了一个 Config 对象 这是课程 final c
  • 单例中的 Spring Prototype 作用域 bean

    我正在尝试注入prototype豆子在一个singleton这样 每次对单例 bean 方法的新调用都会有一个原型 bean 的新实例 考虑一个单例 bean 如下所示 Component public class SingletonBea
  • 停止正在运行的 SKAction - Sprite Kit

    以下代码将为旋转设置动画 let something SKSpriteNode SKSpriteNode func start let rotateAction SKAction rotateToAngle CGFloat M PI dur
  • if 与条件条件相比的速度

    我的想法是使用条件运算符将一些 if 块转换为单行 不过我想知道是否会有速度差异 我进行了以下测试 static long startTime static long elapsedTime static String s public s
  • 在合金模型中使用布尔值的最佳实践

    我正在构建一个简单的 Alloy 来生成简单的 Java Pojo 对象 并且该 pojo 的某些字段是布尔值 我现在使用以下机制来实现这个功能 one sig item autoPay String Price Int fact bool