Share via


Operador de desreferencia segura de Bicep

El operador de desreferencia segura proporciona una manera de acceder a las propiedades de un objeto o elementos de una matriz de forma segura. El operador de desreferencia segura ayuda a evitar errores que pudieran producirse al intentar acceder a propiedades o elementos sin saber adecuadamente de su existencia o valor.

desreferencia segura

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

Un operador de desreferencia segura aplica un acceso a miembros, .?<property>, o el acceso a elementos, [?<index>], operación a su operando solo si ese operando se evalúa como no NULL; de lo contrario, devuelve NULL. Es decir:

  • Si a se evalúa como null, el resultado de a.?x o a[?x] es null.
  • Si a fuera un objeto sin una propiedad x, a.?x será null.
  • Si a fuera una matriz con una longitud menor o igual que x, a[?x] será null.
  • Si a no es null y tiene una propiedad denominada x, el resultado de a.?x será el mismo que el resultado de a.x.
  • Si a no es null y tiene un elemento en el índice x, el resultado de a[?x] será el mismo que el resultado de a[x]

Los operadores de desreferencia segura son cortocircuitantes. Es decir, si una operación en una cadena de la operación de acceso a elementos o miembros condicional devuelve null, no se ejecuta el resto de la cadena. En el ejemplo siguiente, .?name no se evalúa si storageAccountsettings[?i] evalúa a 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'
  }
}]

Pasos siguientes