运算符
Alloy 配置语法使用一套标准的运算符。所有操作遵循 PEMDAS 数学运算顺序。
算术运算符
运算符 | 描述 |
---|---|
+ | 将两个数字相加。 |
- | 将两个数字相减。 |
* | 将两个数字相乘。 |
/ | 将两个数字相除。 |
% | 计算两个数字相除后的余数。 |
^ | 将数字提升到指定的幂次方。 |
字符串运算符
运算符 | 描述 |
---|---|
+ | 连接两个字符串、两个 Secrets,或一个字符串和一个 Secret。 |
比较运算符
运算符 | 描述 |
---|---|
== | 当两个值相等时返回 true 。 |
!= | 当两个值不相等时返回 true 。 |
< | 当左值小于右值时返回 true 。 |
<= | 当左值小于或等于右值时返回 true 。 |
> | 当左值大于右值时返回 true 。 |
>= | 当左值大于或等于右值时返回 true 。 |
您可以将相等运算符 ==
和 !=
用于任何操作数。
排序运算符 <
、<=
、>
和 >=
中的操作数必须是可排序的且类型相同。这些比较的结果是
- 布尔值在两者都为
true
或都为false
时相等。 - 数值(整数和浮点数)按通常方式排序。
- 字符串值按字节进行字典序排序。
- 如果对象的所有字段都相等,则它们相等。
- 如果数组的对应元素相等,则它们相等。
逻辑运算符
运算符 | 描述 |
---|---|
&& | 当左值和右值都为 true 时返回 true 。 |
|| | 当左值或右值为 true 时返回 true 。 |
! | 否定布尔值。 |
逻辑运算符处理布尔值并返回布尔结果。
赋值运算符
Alloy 配置语法使用 =
作为赋值运算符。
赋值语句只能赋予一个值。每个值都必须能够赋值给属性或对象键。
- 您可以将
null
赋值给任何属性。 - 您可以将数值、字符串、布尔值、数组、函数、Capsule 和对象类型赋值给对应类型的属性。
- 您可以通过隐式转换将数字赋值给字符串属性。
- 如果字符串表示一个数字,您可以将其赋值给数值属性。
- 您不能赋值块。
括号
括号 | 描述 |
---|---|
{ } | 定义块和对象。 |
( ) | 对表达式进行分组和设置优先级。 |
[ ] | 定义数组。 |
例如,以下代码使用花括号和方括号定义了一个对象和一个数组。
obj = { app = "alloy", namespace = "dev" }
arr = [1, true, 7 * (1+1), 3]
访问运算符
运算符 | 描述 |
---|---|
[ ] | 访问数组或对象的成员。 |
. | 访问对象的命名成员或组件的导出字段。 |
您可以使用 Alloy 访问运算符来检索嵌套值。使用方括号访问零索引数组元素或通过双引号将字段名括起来访问对象字段。使用点运算符访问对象字段(无需双引号)或组件导出项。
obj["app"]
arr[1]
obj.app
local.file.token.content
如果您使用 [ ]
运算符访问不存在的对象成员,结果为 null
。
如果您使用 .
运算符访问不存在的对象命名成员,将会发生错误。