Udostępnij za pośrednictwem


Operator Bicep safe-dereference

Operator safe-dereference umożliwia bezpieczny dostęp do właściwości obiektu lub elementów tablicy. Pomaga zapobiegać błędom, które mogą wystąpić podczas próby uzyskania dostępu do właściwości lub elementów bez odpowiedniej wiedzy na temat ich istnienia lub wartości.

safe-dereference

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

Operator safe-dereference stosuje dostęp do składowych, .?<property>, lub dostępu do elementów, operację do operandu tylko wtedy, [?<index>]gdy operand ocenia wartość inną niż null; w przeciwnym razie zwraca wartość null. Czyli

  • Jeśli a wartość zostanie obliczona na nullwartość , wynik parametru a.?x lub a[?x] ma wartość null.
  • Jeśli a jest obiektem, który nie ma x właściwości, to a.?x jest null.
  • Jeśli a jest tablicą, której długość jest mniejsza lub równa x, to a[?x] jest .null
  • Jeśli a ma wartość inną niż null i ma właściwość o nazwie x, wynik a.?x jest taki sam jak wynik .a.x
  • Jeśli a parametr ma wartość inną niż null i ma element w indeksie x, wynik a[?x] polecenia jest taki sam jak wynik a[x]

Operatory bezpiecznego wyłudzenia są zwarciem. Oznacza to, że jeśli jedna operacja w łańcuchu operacji dostępu warunkowego lub elementu elementu zwraca nullwartość , pozostała część łańcucha nie jest wykonywana. W poniższym przykładzie nie jest obliczany, .?name jeśli storageAccountsettings[?i] zostanie obliczona nullwartość :

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

resource storage 'Microsoft.Storage/storageAccounts@2023-04-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'
  }
}]

Następne kroki