Operador de propagación de Bicep
El operador de propagación se usa para expandir una matriz o objeto iterable en elementos individuales. El operador de propagación permite manipular fácilmente matrices u objetos mediante la propagación de sus elementos o propiedades en nuevas matrices o objetos.
Spread
...
El operador de propagación se usa para copiar propiedades de un objeto a otro o para combinar matrices y objetos de forma concisa y legible.
Ejemplos
En el siguiente ejemplo se muestra el operador de propagación usado en un objeto :
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
Salida del ejemplo:
Nombre | Tipo | Valor |
---|---|---|
objB |
objeto | { forma: 'circle', color: 'white' } |
En el siguiente ejemplo se muestra el operador de propagación usado en una matriz:
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
Salida del ejemplo:
Nombre | Tipo | Value |
---|---|---|
arrB |
array | [ 1, 2, 3, 4 ] |
En el siguiente ejemplo se muestra la propagación usada varias veces en una sola operación:
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
Salida del ejemplo:
Nombre | Tipo | Value |
---|---|---|
arrC |
array | [ 1, 2, 3, 4, 2, 3 ] |
En el siguiente ejemplo se muestra la propagación usada en una operación de varias líneas:
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
En este uso, la coma no se usa entre las dos líneas. Salida del ejemplo:
Nombre | Tipo | Valor |
---|---|---|
objCombined |
objeto | { color: 'blanco', forma: 'circle' } |
La operación de propagación se puede usar para evitar establecer una propiedad opcional. En el ejemplo siguiente, accessTier solo se establece si el parámetro nivel no es una cadena vacía.
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
}
}
El ejemplo anterior también se puede escribir 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 != '' ? {accesssTier: tier} : {})
}
}
El operador de propagación se puede usar para invalidar las propiedades 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
}
}
Pasos siguientes
- Si desea ejecutar los ejemplos, use la CLI de Azure o Azure PowerShell para implementar un archivo de Bicep.
- Para crear un archivo de Bicep, consulte Inicio rápido: Creación de plantillas de archivos de Bicep con Visual Studio Code.
- Para obtener información sobre cómo resolver errores de tipos de Bicep, consulte Función any para Bicep.