Udostępnij za pośrednictwem


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