Оператор распространения Bicep
Оператор распространения используется для расширения итерируемого массива или объекта в отдельные элементы. Оператор распространения позволяет легко управлять массивами или объектами, распространяя их элементы или свойства в новые массивы или объекты.
Распространение
...
Оператор распространения используется для копирования свойств из одного объекта в другой или для объединения массивов и объектов в краткий и читаемый способ.
Примеры
В следующем примере показан оператор распространения, используемый в объекте:
var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA }
Выходные данные примера
Имя. | Тип | значение |
---|---|---|
objB |
объект | { фигура: "круг", цвет: "белый" } |
В следующем примере показан оператор распространения, используемый в массиве:
var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ]
Выходные данные примера
Имя. | Тип | значение |
---|---|---|
arrB |
array | [ 1, 2, 3, 4 ] |
В следующем примере показано несколько раз, используемых в одной операции:
var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ]
Выходные данные примера
Имя. | Тип | значение |
---|---|---|
arrC |
array | [ 1, 2, 3, 4, 2, 3 ] |
В следующем примере показано распространение, используемое в многострочный операции:
var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = {
...objA
...objB
}
В этом использовании запятая не используется между двумя строками. Выходные данные примера
Имя. | Тип | значение |
---|---|---|
objCombined |
объект | { цвет: "белый", фигура: "круг" } |
Операцию распространения можно использовать, чтобы избежать настройки необязательного свойства. В следующем примере accessTier задается только в том случае, если уровень параметров не является пустой строкой.
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
}
}
Предыдущий пример также можно записать следующим образом:
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} : {})
}
}
Оператор распространения можно использовать для переопределения существующих свойств.
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
}
}
Следующие шаги
- В этих примерах используйте для развертывания файла Bicep Azure CLI или Azure PowerShell.
- Сведения о создании файла Bicep см. в разделе Краткое руководство. Создание файлов Bicep с помощью Visual Studio Code.
- Дополнительные сведения об устранении ошибок типа Bicep см. в статье Функция any для Bicep.