Aracılığıyla paylaş


Bicep spread işleci

Spread işleci, yinelenebilir bir diziyi veya nesneyi tek tek öğelere genişletmek için kullanılır. Spread işleci, öğelerini veya özelliklerini yeni dizilere veya nesnelere yayarak dizileri veya nesneleri kolayca işlemenizi sağlar.

Spread

...

Spread işleci, özellikleri bir nesneden diğerine kopyalamak veya dizileri ve nesneleri kısa ve okunabilir bir şekilde birleştirmek için kullanılır.

Örnekler

Aşağıdaki örnekte bir nesnede kullanılan spread işleci gösterilmektedir:

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

Örnekten çıktı:

Adı Tür Değer
objB nesne { shape: 'circle', color: 'white' }

Aşağıdaki örnekte bir dizide kullanılan spread işleci gösterilmektedir:

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

Örnekten çıktı:

Adı Tür Değer
arrB dizi [ 1, 2, 3, 4 ]

Aşağıdaki örnek, tek bir işlemde birden çok kez kullanılan yayılmayı gösterir:

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

Örnekten çıktı:

Adı Tür Değer
arrC dizi [ 1, 2, 3, 4, 2, 3 ]

Aşağıdaki örnek, çok satırlı bir işlemde kullanılan yayılmayı gösterir:

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

Bu kullanımda, iki satır arasında virgül kullanılmaz. Örnekten çıktı:

Adı Tür Değer
objCombined nesne { color: 'white', shape: 'circle' }

Yayma işlemi, isteğe bağlı bir özelliğin ayarlanmasını önlemek için kullanılabilir. Aşağıdaki örnekte accessTier yalnızca parametre katmanı boş bir dize değilse ayarlanır.

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

Yukarıdaki örnek şu şekilde de yazılabilir:

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

Spread işleci mevcut özellikleri geçersiz kılmak için kullanılabilir.

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

Sonraki adımlar