Bicep safe-dereference 运算符
safe-dereference 运算符提供了一种以安全方式访问对象属性或数组元素的方法。 它有助于防止在不了解其存在或值的情况下尝试访问属性或元素时可能发生的错误。
safe-dereference
<base>.?<property>
<base>[?<index>]
仅当操作数的计算结果为非 null 时,safe-dereference 才对其操作数应用成员访问 .?<property>
或元素访问 [?<index>]
操作;否则,它会返回 null。 即:
- 如果
a
的计算结果为null
,则a.?x
或a[?x]
的结果为null
。 - 如果
a
是没有x
属性的对象,则a.?x
为null
。 - 如果
a
是一个在索引x
处没有元素的对象,那么a[?x]
就是null
- 如果
a
是长度小于或等于x
的数组,则a[?x]
为null
。 - 如果
a
为非 null 且具有名为x
的属性,则a.?x
的结果与a.x
的结果相同。 - 如果
a
为非 null 且在索引x
处有一个元素,则a[?x]
的结果与a[x]
的结果相同
safe-dereference 运算符为短路运算符。 也就是说,如果条件成员或元素访问运算链中的一个运算返回 null
,则链的其余部分不会执行。 在以下示例中,如果 storageAccountsettings[?i]
计算结果为 null
,则不计算 .?name
:
param storageAccountSettings array = []
param storageCount int
param location string = resourceGroup().location
resource storage 'Microsoft.Storage/storageAccounts@2023-04-01' = [for i in range(0, storageCount): {
name: storageAccountSettings[?i].?name ?? 'defaultname'
location: storageAccountSettings[?i].?location ?? location
kind: storageAccountSettings[?i].?kind ?? 'StorageV2'
sku: {
name: storageAccountSettings[?i].?sku ?? 'Standard_GRS'
}
}]
后续步骤
- 若要运行这些示例,请使用 Azure CLI 或 Azure PowerShell 来部署 Bicep 文件。
- 若要创建 Bicep 文件,请参阅快速入门:使用 Visual Studio Code 创建 Bicep 文件。
- 有关如何解决 Bicep 类型错误的信息,请参阅 Bicep 的 Any 函数。