Operador spread do Bicep
O operador spread é usado para expandir uma matriz ou objeto iterável em elementos individuais. O operador spread permite manipular facilmente matrizes ou objetos espalhando seus elementos ou propriedades em novas matrizes ou objetos.
Spread
...
O operador spread é usado para copiar propriedades de um objeto para outro ou mesclar matrizes e objetos de maneira concisa e legível.
Exemplos
O exemplo a seguir mostra o operador spread usado em um objeto:
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
Saída do exemplo:
Nome | Tipo | Valor |
---|---|---|
objB |
objeto | { forma: 'círculo', cor: 'branco' } |
O exemplo a seguir mostra o operador spread usado em uma matriz:
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
Saída do exemplo:
Nome | Tipo | Valor |
---|---|---|
arrB |
matriz | [ 1, 2, 3, 4 ] |
O exemplo a seguir mostra o spread usado vários vezes em uma única operação:
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
Saída do exemplo:
Nome | Tipo | Valor |
---|---|---|
arrC |
matriz | [ 1, 2, 3, 4, 2, 3 ] |
O exemplo a seguir mostra o spread sendo usado em uma operação de várias linhas:
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
Nesse uso, a vírgula não é usada entre as duas linhas. Saída do exemplo:
Nome | Tipo | Valor |
---|---|---|
objCombined |
objeto | { cor: 'branco', forma: 'círculo' } |
O exemplo a seguir mostra como adicionar condicionalmente um elemento de matriz:
@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})
Saída do exemplo:
Nome | Tipo | Valor |
---|---|---|
objB |
objeto | { forma: “círculo”, cor: “black” } |
A operação spread pode ser usada para evitar a configuração de uma propriedade opcional. No exemplo a seguir, a accessTier será definida somente se a camada de parâmetro não for uma cadeia de caracteres vazia.
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
}
}
O exemplo anterior também pode ser escrito como:
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} : {})
}
}
O operador de espalhamento pode ser usado para substituir as propriedades existentes.
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
}
}
Próximas etapas
- Para executar os exemplos, use o CLI do Azure ou o Azure PowerShell para implantar um arquivo Bicep.
- Para criar um arquivo Bicep, consulte Início rápido: criar arquivos Bicep com o Visual Studio Code.
- Para obter informações sobre como resolver erros de tipo Bicep, confira Qualquer função para Bicep.