Operatore spread Bicep
L'operatore spread viene usato per espandere una matrice o un oggetto iterabile in singoli elementi. L'operatore spread consente di modificare facilmente matrici o oggetti distribuendo gli elementi o le proprietà in nuove matrici o oggetti.
Spread
...
L'operatore spread viene usato per copiare le proprietà da un oggetto a un altro o per unire matrici e oggetti in modo conciso e leggibile.
Esempi
Nell'esempio seguente viene illustrato l'operatore spread usato in un oggetto :
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
Output dell'esempio:
Nome | Type | Valore |
---|---|---|
objB |
oggetto | { shape: 'circle', color: 'white' } |
L'esempio seguente mostra l'operatore spread usato in una matrice:
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
Output dell'esempio:
Nome | Type | Valore |
---|---|---|
arrB |
matrice | [ 1, 2, 3, 4 ] |
L'esempio seguente mostra la distribuzione usata più volte in una singola operazione:
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
Output dell'esempio:
Nome | Type | Valore |
---|---|---|
arrC |
matrice | [ 1, 2, 3, 4, 2, 3 ] |
L'esempio seguente mostra la distribuzione usata in un'operazione su più righe:
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
In questo utilizzo, la virgola non viene usata tra le due righe. Output dell'esempio:
Nome | Type | Valore |
---|---|---|
objCombined |
oggetto | { color: 'white', shape: 'circle' } |
L'esempio seguente illustra come aggiungere in modo condizionale un elemento di matrice:
@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})
Output dell'esempio:
Nome | Type | Valore |
---|---|---|
objB |
oggetto | { shape: 'circle', color: 'black' } |
L'operazione di diffusione può essere usata per evitare di impostare una proprietà facoltativa. Nell'esempio seguente accessTier viene impostato solo se il livello del parametro non è una stringa vuota.
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
}
}
L'esempio precedente può anche essere scritto come segue:
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} : {})
}
}
L'operatore spread può essere usato per eseguire l'override delle proprietà esistenti.
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
}
}
Passaggi successivi
- Per eseguire gli esempi, usare l'interfaccia della riga di comando di Azure o Azure PowerShell per distribuire un file Bicep.
- Per creare un file Bicep, vedere Avvio rapido: Creare file Bicep con Visual Studio Code.
- Per informazioni su come risolvere gli errori di tipo Bicep, vedere Qualsiasi funzione per Bicep.