Delen via


Bicep-operator voor veilige deductie

De operator voor veilige deductie biedt een manier om op een veilige manier toegang te krijgen tot eigenschappen van een object of elementen van een matrix. Het helpt fouten te voorkomen die kunnen optreden bij het openen van eigenschappen of elementen zonder de juiste kennis van hun bestaan of waarde.

veilige deductie

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

Een operator voor veilige deductie past een lidtoegang, .?<property>of elementtoegang, [?<index>]alleen toe op de operand als die operand niet-null evalueert; anders retourneert deze null. Anders wordt null geretourneerd. Dat wil gezegd,

  • Als a dit wordt geëvalueerd null, is het resultaat van a.?x of a[?x] is nullhet .
  • Als a dit een object is dat geen eigenschap heeftx, is nulldat a.?x .
  • Als a het een matrix is waarvan de lengte kleiner is dan of gelijk is aan x, is nulldat a[?x] .
  • Als a dit niet null is en een eigenschap heeft met de naam x, is het resultaat a.?x hetzelfde als het resultaat van a.x.
  • Als a niet null is en een element bij de index xheeft, is het resultaat a[?x] hetzelfde als het resultaat van a[x]

De operatoren voor veilige deductie zijn kortsluiting. Als één bewerking in een keten van voorwaardelijke lid- of elementtoegangsbewerkingen retourneert null, wordt de rest van de keten niet uitgevoerd. In het volgende voorbeeld .?name wordt niet geëvalueerd als storageAccountsettings[?i] dit wordt geëvalueerd: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'
  }
}]

Volgende stappen