Partilhar via


Operador de desreferência segura do bíceps

O operador safe-dereference fornece uma maneira de acessar propriedades de um objeto ou elementos de uma matriz de maneira segura. Ajuda a evitar erros que podem ocorrer ao tentar acessar propriedades ou elementos sem o devido conhecimento de sua existência ou valor.

desreferenciação segura

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

Um operador de desreferência segura aplica uma operação de acesso de membro, .?<property>ou acesso de elemento, [?<index>]ao seu operando somente se esse operando for avaliado como não-nulo, caso contrário, ele retornará null. Isso é

  • Se a avalia a null, o resultado de a.?x ou a[?x] é null.
  • Se a é um objeto que não tem uma x propriedade, então a.?x é null.
  • Se a é uma matriz cujo comprimento é menor ou igual a x, então a[?x] é null.
  • Se a não for nulo e tiver uma propriedade chamada x, o resultado de a.?x é o mesmo que o resultado de a.x.
  • Se a for não-nulo e tiver um elemento no índice x, o resultado de a[?x] é o mesmo que o resultado de a[x]

Os operadores de desreferenciação segura estão em curto-circuito. Ou seja, se uma operação em uma cadeia de operações de acesso a membros ou elementos condicionais retornar null, o restante da cadeia não será executado. No exemplo a seguir, .?name não é avaliado se storageAccountsettings[?i] for avaliado como 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'
  }
}]

Próximos passos