Opérateur de répartition Bicep
L’opérateur de répartition est utilisé pour développer un tableau ou un objet itérable en éléments individuels. L’opérateur de répartition vous permet de manipuler facilement des tableaux ou des objets en répartissant leurs éléments ou propriétés dans de nouveaux tableaux ou objets.
Spread
...
L’opérateur de répartition est utilisé pour copier des propriétés d’un objet vers un autre ou pour fusionner des tableaux et des objets de manière concise et lisible.
Exemples
L’exemple suivant montre l’opérateur de répartition utilisé dans un objet :
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
Résultat de l’exemple :
Nom | Type | Value |
---|---|---|
objB |
object | { shape: ’circle’, color: ’white’ } |
L’exemple suivant montre l’opérateur de répartition utilisé dans un tableau :
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
Résultat de l’exemple :
Nom | Type | Valeur |
---|---|---|
arrB |
tableau | [ 1, 2, 3, 4 ] |
L’exemple suivant montre la répartition utilisée plusieurs fois dans une seule opération :
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
Résultat de l’exemple :
Nom | Type | Valeur |
---|---|---|
arrC |
tableau | [ 1, 2, 3, 4, 2, 3 ] |
L’exemple suivant montre la répartition utilisée dans une opération multiligne :
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
Dans cette utilisation, la virgule n’est pas utilisée entre les deux lignes. Résultat de l’exemple :
Nom | Type | Value |
---|---|---|
objCombined |
object | { color: ’white’, shape: ’circle’ } |
L’exemple suivant montre comment ajouter conditionnellement un élément de tableau :
@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})
Résultat de l’exemple :
Nom | Type | Value |
---|---|---|
objB |
object | { shape: ’circle’, color: ’black’ } |
L’opération de répartition peut être utilisée pour éviter de définir une propriété facultative. Dans l’exemple suivant, accessTier est défini uniquement si le paramètre niveau n’est pas une chaîne vide.
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’exemple précédent peut également être écrit comme suit :
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’opérateur de propagation peut être utilisé pour remplacer les propriétés existantes.
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
}
}
Étapes suivantes
- Pour exécuter les exemples, utilisez Azure CLI ou Azure PowerShell afin de déployer un fichier Bicep.
- Pour créer un fichier Bicep, consultez Démarrage rapide : Créer des fichiers Bicep avec Visual Studio Code.
- Pour plus d’informations sur la résolution des erreurs de type Bicep, consultez Fonction any pour Bicep.