我想知道如何在F-Alloy中连接两个字符串或一个字符串和一个整数?目前,为了加载一些依赖于整数值的图像,我正在做以下事情:
t.gainAttackPoints = 1 implies i.url = "platform:/resource/MBSD_DSL_Project/DSL/ConcreteSyntax/images/atkGain1.png"
t.gainAttackPoints = 2 implies i.url = "platform:/resource/MBSD_DSL_Project/DSL/ConcreteSyntax/images/atkGain2.png"
t.gainAttackPoints = 3 implies i.url = "platform:/resource/MBSD_DSL_Project/DSL/ConcreteSyntax/images/atkGain3.png"
但是,我希望能够以某种方式与Java类似:
i.url = "platform:/resource/MBSD_DSL_Project/DSL/ConcreteSyntax/images/atkGain" + t.gainAttackPoints + ".png"
如何实现这一目标?
答案 0 :(得分:0)
Alloy本身不支持字符串连接。字符串通常被抽象掉,因为语言主要用于推理概念和关系。
在项目中破解字符串连接的方法是将字段声明为字符串序列。然后,连接将在序列中附加一个字符串。
但是,对于您的问题,由于默认情况下提供的LightningVLM模型中声明了url字段,因此您无法自由使用字符串序列。通常不建议修改此模型。
<强> TL;博士强>
Alloy不支持字符串连接,遗憾的是你注定要在一个块中提供图像url :-(。
如果要保持值谓词干净,可能需要声明一个函数,为给定值t.gainAttackPoints
返回正确的url。但是F-Alloy规范不支持函数声明,因此您必须在F-Alloy转换的源模型中声明它。