Operador safe-dereference do Bicep
O operador safe-dereference fornece uma maneira de acessar propriedades de um objeto ou elementos de uma matriz de forma segura. Isso ajuda a evitar erros que podem ocorrer ao tentar acessar propriedades ou elementos sem o conhecimento adequado de sua existência ou valor.
safe-dereference
<base>.?<property>
<base>[?<index>]
Um operador de safe-deference aplica uma operação de acesso a membro .?<property>
ou acesso a elemento [?<index>]
ao seu operando somente se esse operando for avaliado como não nulo; caso contrário, ele retorna nulo. Ou seja:
- Se
a
for avaliado comonull
, o resultado dea.?x
oua[?x]
seránull
. - Se
a
é um objeto que não tem uma propriedadex
, entãoa.?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 chamadax
, o resultado dea.?x
será o mesmo que o resultado dea.x
. - Se
a
não for nulo e tiver um elemento no índicex
, o resultado dea[?x]
será o mesmo que o resultado dea[x]
Os operadores de safe-deference são operadores de curto-circuito. Ou seja, se uma operação em uma cadeia de membro operações condicionais de acesso a membro ou elemento 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óximas etapas
- Para executar os exemplos, use o CLI do Azure ou o Azure PowerShell para implantar um arquivo Bicep.
- Para criar um arquivo Bicep, consulte Início rápido: criar arquivos Bicep com o Visual Studio Code.
- Para obter informações sobre como resolver erros de tipo Bicep, confira Qualquer função para Bicep.