Bicep の safe-dereference 演算子
safe-dereference 演算子は、オブジェクトのプロパティや配列の要素に安全にアクセスする方法を提供します。 これは、プロパティまたは要素の存在や値を適切に知らずにプロパティまたは要素にアクセスしようとしたときに発生する可能性のあるエラーを防ぐのに役立ちます。
safe-dereference
<base>.?<property>
<base>[?<index>]
safe-dereference 演算子は、そのオペランドが null 以外に評価される場合にのみ、メンバー アクセス .?<property>
、または要素アクセス [?<index>]
演算子をそのオペランドに適用します。それ以外の場合は、null を返します。 つまり、以下のようになります。
a
が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 演算子は短絡実行されます。 つまり、条件付きのメンバーまたは要素アクセス操作のチェーン内にある 1 つの操作から 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 関数」を参照してください。