Operator spreadu Bicep
Operator rozkładu służy do rozszerzania iterowalnej tablicy lub obiektu na poszczególne elementy. Operator rozkładu umożliwia łatwe manipulowanie tablicami lub obiektami przez rozłożenie ich elementów lub właściwości na nowe tablice lub obiekty.
Spread
...
Operator rozprzestrzeniania służy do kopiowania właściwości z jednego obiektu do innego lub scalania tablic i obiektów w zwięzły i czytelny sposób.
Przykłady
W poniższym przykładzie pokazano operator spreadu używany w obiekcie:
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
Dane wyjściowe z przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
objB |
obiekt | { kształt: "okrąg", kolor: "biały" } |
W poniższym przykładzie pokazano operator spreadu używany w tablicy:
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
Dane wyjściowe z przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
arrB |
tablica | [ 1, 2, 3, 4 ] |
W poniższym przykładzie pokazano rozrzut używany wiele razy w jednej operacji:
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
Dane wyjściowe z przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
arrC |
tablica | [ 1, 2, 3, 4, 2, 3 ] |
W poniższym przykładzie pokazano rozmieszczenie używane w operacji wielowierszowej:
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
W tym użyciu przecinek nie jest używany między dwoma wierszami. Dane wyjściowe z przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
objCombined |
obiekt | { color: 'white', shape: 'circle' } |
W poniższym przykładzie pokazano, jak warunkowo dodać element tablicy:
@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})
Dane wyjściowe z przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
objB |
obiekt | { kształt: "okrąg", kolor: "" } |
Operację rozprzestrzeniania można użyć, aby uniknąć ustawiania właściwości opcjonalnej. W poniższym przykładzie właściwość accessTier jest ustawiana tylko wtedy, gdy warstwa parametrów nie jest pustym ciągiem.
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
}
}
Powyższy przykład można również napisać jako:
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} : {})
}
}
Operator spreadu może służyć do zastępowania istniejących właściwości.
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
}
}
Następne kroki
- Aby uruchomić przykłady, użyj interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby wdrożyć plik Bicep.
- Aby utworzyć plik Bicep, zobacz Szybki start: tworzenie plików Bicep za pomocą programu Visual Studio Code.
- Aby uzyskać informacje na temat sposobu rozwiązywania błędów typu Bicep, zobacz Any function for Bicep (Dowolna funkcja dla Bicep).