Partage via


Opérateur de déréférencement sécurisé Bicep

L’opérateur de déréférencement sécurisé facilite l’accès aux propriétés d’un objet ou d’éléments d’un tableau de manière sécurisée. Il permet d’éviter les erreurs pouvant survenir lors d’une tentative d’accès à des propriétés ou à des éléments sans connaissance précise de leur existence ou de leur valeur.

déréférencement sécurisé

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

Un opérateur de déréférencement sécurisé applique une opération d’accès à un membre, .?<property>, ou d’accès à un élément, [?<index>], à son opérande que si celui-ci a une valeur non nulle ; sinon, il retourne une valeur nulle. Plus précisément :

  • Si a renvoie la valeur null, le résultat de a.?x ou a[?x] est null.
  • Si a est un objet qui n’a pas de propriété x, a.?x est alors null.
  • Si a est un tableau dont la longueur est inférieure ou égale à x, a[?x] est alors null.
  • Si a a une valeur non nulle et une propriété nommée x, le résultat de a.?x est identique au résultat de a.x.
  • Si a a une valeur non nulle et un élément à l’index x, le résultat de a[?x] est identique au résultat de a[x]

Les opérateurs de déréférencement sécurisé ont un effet de court-circuit. Autrement dit, si une opération dans une chaîne d’opérations d’accès au membre ou à l’élément conditionnelles retourne une valeur null, le reste de la chaîne ne s’exécute pas. Dans l’exemple suivant, .?name n’est pas évalué si storageAccountsettings[?i] renvoie la valeur 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'
  }
}]

Étapes suivantes