Bagikan melalui


Operator penyebaran Bicep

Operator spread digunakan untuk memperluas array atau objek yang dapat diulang ke dalam elemen individual. Operator spread memungkinkan Anda memanipulasi array atau objek dengan mudah dengan menyebarkan elemen atau propertinya ke dalam array atau objek baru.

Sebar

...

Operator spread digunakan untuk menyalin properti dari satu objek ke objek lainnya atau untuk menggabungkan array dan objek dengan cara yang ringkas dan dapat dibaca.

Contoh

Contoh berikut menunjukkan operator spread yang digunakan dalam objek:

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

Output dari contoh:

Nama Jenis Nilai
objB objek { shape: 'circle', color: 'white' }

Contoh berikut menunjukkan operator spread yang digunakan dalam array:

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

Output dari contoh:

Nama Jenis Nilai
arrB array [ 1, 2, 3, 4 ]

Contoh berikut menunjukkan spread yang digunakan beberapa kali dalam satu operasi:

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

Output dari contoh:

Nama Jenis Nilai
arrC array [ 1, 2, 3, 4, 2, 3 ]

Contoh berikut menunjukkan spread yang digunakan dalam operasi multibaris:

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

Dalam penggunaan ini, koma tidak digunakan di antara dua baris. Output dari contoh:

Nama Jenis Nilai
objCombined objek { warna: 'putih', bentuk: 'lingkaran' }

Contoh berikut menunjukkan cara menambahkan elemen array secara kondisional:

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

Output dari contoh:

Nama Jenis Nilai
objB objek { shape: 'circle', color: 'black' }

Operasi penyebaran dapat digunakan untuk menghindari pengaturan properti opsional. Dalam contoh berikut, accessTier diatur hanya jika tingkat parameter bukan string kosong.

param location string = resourceGroup().location
param tier string = 'Hot'

var storageAccountName = uniqueString(resourceGroup().id)
var accessTier = tier != '' ? {accessTier: tier} : {}

resource mystorage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    ...accessTier
  } 
}

Contoh sebelumnya juga dapat ditulis sebagai:

param location string = resourceGroup().location
param tier string = 'Hot'

var storageAccountName = uniqueString(resourceGroup().id)

resource mystorage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    ...(tier != '' ? {accessTier: tier} : {})
  } 
}

Operator spread dapat digunakan untuk mengambil alih properti yang ada.

param location string = resourceGroup().location
param storageProperties {
  accessTier: string?
}

resource mystorage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
  name: uniqueString(resourceGroup().id)
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Cold'
    ...storageProperties
  }
}

Langkah berikutnya