Оператор Bicep safe-dereference

Оператор безопасной расшифровки предоставляет способ доступа к свойствам объекта или элементов массива в безопасном режиме. Это помогает предотвратить ошибки, которые могут возникать при попытке доступа к свойствам или элементам без надлежащего знания о их существовании или значении.

безопасное разыменовывание

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

Оператор безопасной расшифровки применяет доступ к члену или .?<property>доступ к элементу, [?<index>]операцию к операнду только в том случае, если операнд оценивается как ненулевое; в противном случае возвращает значение NULL. Это означает следующее:

  • Если a вычисляется как null, то результатом a.?x или a[?x] является null.
  • Если a это объект, который не имеет x свойства, то a.?x есть null.
  • Если a массив, длина которого меньше или равна x, то a[?x] есть null.
  • Если a значение не равно null и имеет свойство с именем x, результатом a.?x является тот же результат, что и результат a.x.
  • Если a значение не равно null и имеет элемент в индексе x, результатом a[?x] является тот же результат, что и результат a[x]

Операторы безопасной расшифровки являются короткими. То есть, если в цепочке операций условного доступа к элементу или члену одна из операций возвращает значение null, остальная цепочка не выполняется. В следующем примере не вычисляется, .?name если storageAccountsettings[?i] вычисляется 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'
  }
}]

Следующие шаги