Bagikan melalui


Operator dereferensi aman Bicep

Operator dereferensi aman menyediakan cara untuk mengakses properti objek atau elemen array dengan cara yang aman. Ini membantu mencegah kesalahan yang dapat terjadi ketika mencoba mengakses properti atau elemen tanpa pengetahuan yang tepat tentang keberadaan atau nilainya.

dereferensi aman

<base>.?<property> <base>[?<index>]

Operator dereferensi aman menerapkan akses anggota, .?<property>, atau akses elemen, [?<index>], operasi ke operand-nya hanya jika operand tersebut mengevaluasi ke non-null; jika tidak, itu mengembalikan null. Yaitu,

  • Jika a mengevaluasi ke null, hasil dari a.?x atau a[?x] adalah null.
  • Jika a adalah objek yang tidak memiliki x properti, maka a.?x adalah null.
  • Jika a adalah array yang panjangnya kurang dari atau sama dengan x, maka a[?x] adalah null.
  • Jika a non-null dan memiliki properti bernama x, hasilnya a.?x sama dengan hasil .a.x
  • Jika a non-null dan memiliki elemen pada indeks x, hasilnya a[?x] sama dengan hasil a[x]

Operator dereferensi aman mengalami sirkuit pendek. Artinya, jika satu operasi dalam rantai anggota kondisional atau operasi akses elemen mengembalikan null, sisa rantai tidak dijalankan. Dalam contoh berikut, .?name tidak dievaluasi jika storageAccountsettings[?i] dievaluasi ke null:

param storageAccountSettings array = []
param storageCount int
param location string = resourceGroup().location

resource storage 'Microsoft.Storage/storageAccounts@2022-09-01' = [for i in range(0, storageCount): {
  name: storageAccountSettings[?i].?name ?? 'defaultname'
  location: storageAccountSettings[?i].?location ?? location
  kind: storageAccountSettings[?i].?kind ?? 'StorageV2'
  sku: {
    name: storageAccountSettings[?i].?sku ?? 'Standard_GRS'
  }
}]

Langkah berikutnya