Bicep のスプレッド演算子
スプレッド演算子は、反復可能な配列またはオブジェクトを個々の要素に展開するために使用されます。 スプレッド演算子を使用すると、配列やオブジェクトを簡単に操作できるように、それらの要素やプロパティを新しい配列やオブジェクトに分散させることができます。
Spread
...
スプレッド演算子は、あるオブジェクトから別のオブジェクトにプロパティをコピーしたり、簡潔で読みやすい方法で配列とオブジェクトをマージしたりするために使用されます。
例
次の例は、オブジェクトで使用されるスプレッド演算子を示しています。
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
例からの出力を次に示します。
名前 | Type | Value |
---|---|---|
objB |
オブジェクト | { shape: 'circle', color: 'white' } |
次の例は、配列で使用されるスプレッド演算子を示しています。
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
例からの出力を次に示します。
名前 | Type | 値 |
---|---|---|
arrB |
配列 | [ 1, 2, 3, 4 ] |
次の例は、1 回の操作で複数回使用されるスプレッドを示しています。
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
例からの出力を次に示します。
名前 | Type | 値 |
---|---|---|
arrC |
配列 | [ 1, 2, 3, 4, 2, 3 ] |
次の例は、複数行の操作で使用されるスプレッドを示しています。
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
この使用法では、2 行の間にコンマは使用されません。 例からの出力を次に示します。
名前 | Type | Value |
---|---|---|
objCombined |
オブジェクト | { color: 'white', shape: 'circle' } |
次の例は、配列要素を条件付きで追加する方法を示しています。
@allowed(['white', 'black'])
param color string = 'black'
var colorWhite = { color: 'white' }
var colorBlack = { color: 'black' }
output objB object = ((color == 'white')? { shape: 'circle', ...colorWhite} : { shape: 'circle', ...colorBlack})
例からの出力を次に示します。
名前 | Type | Value |
---|---|---|
objB |
オブジェクト | { shape: 'circle', color: 'black' } |
スプレッド操作を使用すると、省略可能なプロパティの設定を回避できます。 次の例では、パラメーター tier が空の文字列でない場合にのみ、accessTier が設定されます。
param location string = resourceGroup().location
param tier string = 'Hot'
var storageAccountName = uniqueString(resourceGroup().id)
var accessTier = tier != '' ? {accessTier: tier} : {}
resource mystorage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
...accessTier
}
}
上記の例は、次のように記述することもできます。
param location string = resourceGroup().location
param tier string = 'Hot'
var storageAccountName = uniqueString(resourceGroup().id)
resource mystorage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
...(tier != '' ? {accessTier: tier} : {})
}
}
スプレッド演算子を使用して、既存のプロパティをオーバーライドできます。
param location string = resourceGroup().location
param storageProperties {
accessTier: string?
}
resource mystorage 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: uniqueString(resourceGroup().id)
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Cold'
...storageProperties
}
}
次のステップ
- この例を実行するには、Azure CLI または Azure PowerShell を使用して、Bicep ファイルをデプロイします。
- Bicep ファイルの作成方法については、「クイックスタート: Visual Studio Code を使用して Bicep ファイルを作成する」を参照してください。
- Bicep の型のエラーを解決する方法については、「Bicep の any 関数」を参照してください。