Bicep safe-dereference – operátor

Operátor safe-dereference poskytuje způsob, jak bezpečně přistupovat k vlastnostem objektu nebo prvků pole. Pomáhá zabránit chybám, ke kterým může dojít při pokusu o přístup k vlastnostem nebo prvkům bez řádného vědomí jejich existence nebo hodnoty.

safe-dereference

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

Operátor safe-dereference použije pro svůj operand operaci přístup člena nebo .?<property>elementu, [?<index>]pouze pokud se tento operand vyhodnotí jako nenulový. V opačném případě vrátí hodnotu null. To je

  • Pokud a se vyhodnotí jako null, výsledek a.?x nebo a[?x] je null.
  • Pokud a je objekt, který nemá x vlastnost, pak a.?x je null.
  • Pokud a je matice, jejíž délka je menší nebo rovna x, pak a[?x] je null.
  • Pokud a není null a má vlastnost s názvem x, výsledek a.?x je stejný jako výsledek .a.x
  • Pokud a není null a má prvek indexu x, výsledek a[?x] je stejný jako výsledek a[x]

Operátory bezpečného dereference jsou zkratové. To znamená, že pokud jedna operace v řetězci operací přístupu podmíněného člena nebo elementu vrátí null, zbytek řetězce se nespustí. V následujícím příkladu se nevyhodnocuje, .?name pokud storageAccountsettings[?i] se vyhodnotí jako 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'
  }
}]

Další kroky