Лазурный бицепс: цикл for в определении переменной невозможен?

Я создаю модуль бицепса следующим образом:

param permission object

var keys = [for key in permission.keys: key]
var secretes= [for secret in permission.secrets: secret]
var certificates = [for certificate in permission.certificates: certificate]

где «разрешения» — это объект, содержащий эти 3 массива.
Это хорошо работает, но я бы предпочел что-то вроде этого (одна сложная переменная вместо трех отдельных массивов):

var x = {
  keys: [for key in permission.keys: key]
  secrets: [for secret in permission.secrets: secret]   
  certificates: [for certificate in permission.certificates: certificate]
}

Синтаксически это не разрешено. Интересно, что при выполнении того же действия в определении ресурса действует тот же синтаксис, например:

resource EventHubAuthorization 'Microsoft.EventHub/namespaces/eventhubs/authorizationRules@2021-01-01-preview' = {
  name: '${EventHub.name}/${AuthorizationName}'
  properties: {
    rights: [for right in Rights: right]
  }
}

Это просто так или я что-то упускаю и то, что я хочу, можно было бы сделать - просто по-другому?

бр волкер

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это не поддерживается в соответствии с сообщением об ошибке:

For-expressions are not supported in this context. For-expressions may be used as values of resource, module, variable, and output declarations, or values of resource and module properties.bicep(BCP138)

Вы всегда можете сделать что-то вроде этого:

param permission object

var keys = [for key in permission.keys: key]
var secrets= [for secret in permission.secrets: secret]
var certificates = [for certificate in permission.certificates: certificate]

var x = {
  keys: keys
  secrets: secrets
  certificates: certificates
}

Но здесь переменная x выглядит примерно так же, как параметр permission.

Привет Томас, спасибо за ваш вклад. Вы правы с переменной x. Я просто был обеспокоен синтаксисом.

vkoster 24.04.2022 14:43

Другие вопросы по теме