Sdílet prostřednictvím


Operátor rozložení Bicep

Operátor šíření slouží k rozšíření iterovatelného pole nebo objektu do jednotlivých prvků. Operátor šíření umožňuje snadno manipulovat s poli nebo objekty rozložením jejich prvků nebo vlastností do nových polí nebo objektů.

Spread

...

Operátor šíření slouží ke kopírování vlastností z jednoho objektu do druhého nebo ke sloučení polí a objektů stručným a čitelným způsobem.

Příklady

Následující příklad ukazuje operátor rozložení použitý v objektu:

var objA = { color: 'white' }
output objB object = { shape: 'circle', ...objA } 

Výstup z příkladu:

Name Typ Hodnota
objB objekt { shape: 'circle', color: 'white' }

Následující příklad ukazuje operátor šíření použitý v poli:

var arrA = [ 2, 3 ]
output arrB array = [ 1, ...arrA, 4 ] 

Výstup z příkladu:

Name Typ Hodnota
arrB pole [ 1, 2, 3, 4 ]

Následující příklad ukazuje, že se v jedné operaci používá vícekrát:

var arrA = [ 2, 3 ]
output arrC array = [ 1, ...arrA, 4, ...arrA ] 

Výstup z příkladu:

Name Typ Hodnota
arrC pole [ 1, 2, 3, 4, 2, 3 ]

Následující příklad ukazuje rozložení použité ve víceřádkové operaci:

var objA = { color: 'white' }
var objB = { shape: 'circle'}
output objCombined object = { 
  ...objA 
  ...objB
} 

V tomto použití se čárka mezi těmito dvěma řádky nepoužívá. Výstup z příkladu:

Name Typ Hodnota
objCombined objekt { color: 'white', shape: 'circle' }

Následující příklad ukazuje, jak podmíněně přidat prvek pole:

@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})

Výstup z příkladu:

Name Typ Hodnota
objB objekt { shape: 'circle', color: 'black' }

Operace šíření se dá použít k tomu, aby se zabránilo nastavení volitelné vlastnosti. V následujícím příkladu je accessTier nastaven pouze v případě, že úroveň parametru není prázdný řetězec.

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
  } 
}

Předchozí příklad lze také napsat takto:

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} : {})
  } 
}

Operátor šíření lze použít k přepsání existujících vlastností.

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
  }
}

Další kroky