Operador bicep safe-dereference
O operador de dereferência segura fornece uma forma de aceder às propriedades de um objeto ou elementos de uma matriz de forma segura. Ajuda a evitar erros que podem ocorrer ao tentar aceder a propriedades ou elementos sem conhecimento adequado da sua existência ou valor.
segurança-dereferência
<base>.?<property>
<base>[?<index>]
Um operador de dereferência segura aplica um acesso de membro, .?<property>
ou acesso a elementos, [?<index>]
, operação ao operando apenas se esse operando for avaliado como não nulo; caso contrário, devolve nulo. Ou seja,
- Se
a
for avaliado comonull
, o resultado dea.?x
oua[?x]
énull
. - Se
a
for um objeto que não tenha umax
propriedade, significaa.?x
null
. - Se
a
for uma matriz cujo comprimento é menor ou igual ax
, entãoa[?x]
énull
. - Se
a
não for nulo e tiver uma propriedade com o nomex
, o resultado éa.?x
igual ao resultado dea.x
. - Se
a
não for nulo e tiver um elemento no índicex
, o resultado dea[?x]
é o mesmo que o resultado dea[x]
Os operadores de dereferência segura são de curto-circuito. Ou seja, se uma operação numa cadeia de operações de acesso condicional de membros ou elementos devolver null
, o resto da cadeia não será executada. No exemplo seguinte, .?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@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'
}
}]
Passos seguintes
- Para executar os exemplos, utilize a CLI do Azure ou Azure PowerShell para implementar um ficheiro Bicep.
- Para criar um ficheiro Bicep, veja Início Rápido: Criar ficheiros Bicep com o Visual Studio Code.
- Para obter informações sobre como resolver erros de tipo Bicep, veja Qualquer função para Bicep.