Dela via


Bicep-spridningsoperator

Spridningsoperatorn används för att expandera en iterbar matris eller ett objekt till enskilda element. Med spridningsoperatorn kan du enkelt ändra matriser eller objekt genom att sprida deras element eller egenskaper till nya matriser eller objekt.

Sprida

...

Spridningsoperatorn används för att kopiera egenskaper från ett objekt till ett annat eller för att sammanfoga matriser och objekt på ett koncist och läsbart sätt.

Exempel

I följande exempel visas den spridningsoperator som används i ett objekt:

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

Utdata från exemplet:

Namn Typ Värde
objB objekt { form: "cirkel", färg: "vit" }

I följande exempel visas den spridningsoperator som används i en matris:

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

Utdata från exemplet:

Namn Typ Värde
arrB matris [ 1, 2, 3, 4 ]

I följande exempel visas spridning som används flera gånger i en enda åtgärd:

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

Utdata från exemplet:

Namn Typ Värde
arrC matris [ 1, 2, 3, 4, 2, 3 ]

I följande exempel visas spridning som används i en flerradsåtgärd:

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

I den här användningen används inte kommatecken mellan de två raderna. Utdata från exemplet:

Namn Typ Värde
objCombined objekt { färg: "vit", form: "cirkel" }

I följande exempel visas hur du villkorligt lägger till ett matriselement:

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

Utdata från exemplet:

Namn Typ Värde
objB objekt { form: "cirkel", färg: "svart" }

Spridningsåtgärden kan användas för att undvika att ange en valfri egenskap. I följande exempel anges endast accessTier om parameternivån inte är en tom sträng.

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

Föregående exempel kan också skrivas som:

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

Spridningsoperatorn kan användas för att åsidosätta befintliga egenskaper.

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

Nästa steg