Freigeben über


Bicep-Operator „spread“

Der spread-Operator wird verwendet, um ein iterierbares Array oder Objekt auf einzelne Elemente zu erweitern. Mit dem spread-Operator können Sie Arrays oder Objekte ganz einfach bearbeiten, indem Sie ihre Elemente oder Eigenschaften auf neue Arrays oder Objekte verteilen.

Spread

...

Der Spread-Operator wird verwendet, um Eigenschaften aus einem Objekt in ein anderes zu kopieren oder Arrays und Objekte präzise und lesbar zusammenzuführen.

Beispiele

Das folgende Beispiel zeigt die Verwendung des spread-Operators in einem Objekt:

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

Ausgabe des Beispiels:

Name type Wert
objB Objekt { shape: 'circle', color: 'white' }

Das folgende Beispiel zeigt die Verwendung des spread-Operators in einem Array:

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

Ausgabe des Beispiels:

Name type Wert
arrB array [ 1, 2, 3, 4 ]

Das folgende Beispiel zeigt die Mehrfachverwendung von „spread“ in einem einzelnen Vorgang:

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

Ausgabe des Beispiels:

Name type Wert
arrC array [ 1, 2, 3, 4, 2, 3 ]

Das folgende Beispiel zeigt die Verwendung von „spread“ in einem mehrzeiligen Vorgang:

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

In diesem Anwendungsfall wird zwischen den beiden Zeilen kein Komma eingefügt. Ausgabe des Beispiels:

Name type Wert
objCombined Objekt { color: 'white', shape: 'circle' }

Das folgende Beispiel zeigt, wie Sie ein Arrayelement bedingt hinzufügen:

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

Ausgabe des Beispiels:

Name type Wert
objB Objekt { shape: 'circle', color: 'black' }

Der spread-Vorgang kann dazu verwendet werden, das Festlegen einer optionalen Eigenschaft zu vermeiden. Im folgenden Beispiel wird accessTier nur festgelegt, wenn der Parameter Ebene keine leere Zeichenfolge ist.

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

Das obige Beispiel kann auch wie folgt geschrieben werden:

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

Der Überfüllungsoperator kann zum Außerkraftsetzen vorhandener Eigenschaften verwendet werden.

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ächste Schritte