Dela via


Bicep safe-dereference-operator

Operatorn safe-dereference ger ett sätt att komma åt egenskaper för ett objekt eller element i en matris på ett säkert sätt. Det hjälper till att förhindra fel som kan uppstå när du försöker komma åt egenskaper eller element utan att känna till deras existens eller värde.

safe-dereference

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

En safe-dereference-operator tillämpar en medlemsåtkomst, .?<property>, eller elementåtkomst, [?<index>], åtgärd på dess operand endast om operanden utvärderas till icke-null. Annars returneras null. Det är

  • Om a utvärderas till nullär nullresultatet av a.?x eller a[?x] .
  • Om a är ett objekt som inte har en x egenskap är nulldet a.?x .
  • Om a är ett objekt som inte har ett element i indexet xär det a[?x]null
  • Om a är en matris vars längd är mindre än eller lika med xär nulla[?x] .
  • Om a är icke-null och har en egenskap med namnet xär resultatet av a.?x detsamma som resultatet av a.x.
  • Om a är icke-null och har ett element vid index xär resultatet av a[?x] detsamma som resultatet av a[x]

Operatorerna för säker avreferering kortsluter. Om en åtgärd i en kedja med villkorsstyrda medlems- eller elementåtkomståtgärder returnerar nullkörs inte resten av kedjan. I följande exempel .?name utvärderas inte om storageAccountsettings[?i] utvärderas till null:

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

Nästa steg