Bicep-spridningsoperator
Spridningsoperatorn används för att expandera en iterbar matris eller ett objekt till enskilda element. Med spridningsoperatorn kan du enkelt ändra matriser eller objekt genom att sprida deras element eller egenskaper till nya matriser eller objekt.
Sprida
...
Spridningsoperatorn används för att kopiera egenskaper från ett objekt till ett annat eller för att sammanfoga matriser och objekt på ett koncist och läsbart sätt.
Exempel
I följande exempel visas den spridningsoperator som används i ett objekt:
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
Utdata från exemplet:
Namn | Typ | Värde |
---|---|---|
objB |
objekt | { form: "cirkel", färg: "vit" } |
I följande exempel visas den spridningsoperator som används i en matris:
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
Utdata från exemplet:
Namn | Typ | Värde |
---|---|---|
arrB |
matris | [ 1, 2, 3, 4 ] |
I följande exempel visas spridning som används flera gånger i en enda åtgärd:
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
Utdata från exemplet:
Namn | Typ | Värde |
---|---|---|
arrC |
matris | [ 1, 2, 3, 4, 2, 3 ] |
I följande exempel visas spridning som används i en flerradsåtgärd:
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
I den här användningen används inte kommatecken mellan de två raderna. Utdata från exemplet:
Namn | Typ | Värde |
---|---|---|
objCombined |
objekt | { färg: "vit", form: "cirkel" } |
I följande exempel visas hur du villkorligt lägger till ett matriselement:
@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})
Utdata från exemplet:
Namn | Typ | Värde |
---|---|---|
objB |
objekt | { form: "cirkel", färg: "svart" } |
Spridningsåtgärden kan användas för att undvika att ange en valfri egenskap. I följande exempel anges endast accessTier om parameternivån inte är en tom sträng.
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
}
}
Föregående exempel kan också skrivas som:
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} : {})
}
}
Spridningsoperatorn kan användas för att åsidosätta befintliga egenskaper.
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
}
}
Nästa steg
- Om du vill köra exemplen använder du Azure CLI eller Azure PowerShell för att distribuera en Bicep-fil.
- Information om hur du skapar en Bicep-fil finns i Snabbstart: Skapa Bicep-filer med Visual Studio Code.
- Information om hur du löser Bicep-typfel finns i Alla funktioner för Bicep.