Bicep 逻辑运算符

逻辑运算符用于计算布尔值,返回非 NULL 值,或计算条件表达式。 若要运行示例,请使用 Azure CLI 或 Azure PowerShell 来部署 Bicep 文件

运算符 名称
&& And
|| Or
! Not
?? Coalesce
? : 条件表达式

与 &&

operand1 && operand2

确定两个值是否都为 true。

操作数

操作数 类型 说明
operand1 boolean 要检查是否为 true 的第一个值。
operand2 boolean 要检查是否为 true 的第二个值。
更多操作数 boolean 可以包括更多操作数。

返回值

如果两个值均为 true,则返回 True,否则返回 false

示例

计算一组参数值和一组表达式。

param operand1 bool = true
param operand2 bool = true

output andResultParm bool = operand1 && operand2
output andResultExp bool = 10 >= 10 && 5 > 2

示例输出:

名称 类型
andResultParm boolean
andResultExp boolean

若要避免 Bicep 对象出现“语言表达式属性 'foo' 不存在”异常,可以使用 And 逻辑运算符,如以下示例所示:

param objectToTest object = {
  one: 1
  two: 2
  three: 3
}

output bar bool = contains(objectToTest, 'four') && objectToTest.four == 4

或 ||

operand1 || operand2

确定是否有一个值为 true。

操作数

操作数 类型 说明
operand1 boolean 要检查是否为 true 的第一个值。
operand2 boolean 要检查是否为 true 的第二个值。
更多操作数 boolean 可以包括更多操作数。

返回值

如果任一值为 true,则返回 True,否则返回 false

示例

计算一组参数值和一组表达式。

param operand1 bool = true
param operand2 bool = false

output orResultParm bool = operand1 || operand2
output orResultExp bool = 10 >= 10 || 5 < 2

示例输出:

名称 类型
orResultParm boolean
orResultExp boolean

若要避免出现“语言表达式属性数组索引 'x' 超出范围”异常,可以使用 Or 逻辑运算符,如以下示例所示:

param emptyArray array = []
param numberArray array = [1, 2, 3]

output foo bool = empty(emptyArray) || emptyArray[0] == 'bar'
output bar bool = length(numberArray) >= 3 || numberArray[3] == 4

非 !

!boolValue

对布尔值求反。

操作数

操作数 类型 说明
boolValue boolean 求反的布尔值。

返回值

对初始值求反,并返回一个布尔值。 如果初始值为 true,则返回 false

示例

not 运算符对值求反。 可以用括号将值括起来。

param initTrue bool = true
param initFalse bool = false

output startedTrue bool = !(initTrue)
output startedFalse bool = !initFalse

示例输出:

名称 类型
startedTrue boolean false
startedFalse boolean

Coalesce ??

operand1 ?? operand2

从操作数返回第一个非 NULL 值。

操作数

操作数 类型 说明
operand1 字符串、整数、布尔值、对象、数组 检测是否为 null 的值。
operand2 字符串、整数、布尔值、对象、数组 检测是否为 null 的值。
更多操作数 字符串、整数、布尔值、对象、数组 检测是否为 null 的值。

返回值

返回第一个非 NULL 值。 空字符串、空数组和空对象不是 null,并且会返回 <empty> 值。

示例

输出语句返回非 NULL 值。 输出类型必须与比较中的类型匹配,否则会生成错误。

param myObject object = {
  isnull1: null
  isnull2: null
  string: 'demoString'
  emptystr: ''
  integer: 10
  }

output nonNullStr string = myObject.isnull1 ?? myObject.string ?? myObject.isnull2
output nonNullInt int = myObject.isnull1 ?? myObject.integer ?? myObject.isnull2
output nonNullEmpty string = myObject.isnull1 ?? myObject.emptystr ?? myObject.string ?? myObject.isnull2

示例输出:

名称 类型
nonNullStr 字符串 demoString
nonNullInt int 10
nonNullEmpty string <empty>

条件表达式 ? 解码的字符:

condition ? true-value : false-value

计算条件并返回一个值,指示条件为 true 还是 false。

操作数

操作数 类型 说明
condition boolean 计算结果为 true 或 false 的条件。
true-value 字符串、整数、布尔值、对象、数组 条件为 true 时的值。
false-value 字符串、整数、布尔值、对象、数组 条件为 false 时的值。

示例

此示例计算参数的初始值,并返回一个指示条件为 true 或 false 的值。

param initValue bool = true

output outValue string = initValue ? 'true value' : 'false value'

示例输出:

名称 类型
outValue 字符串 true 值

后续步骤