Funções definidas pelo usuário no Bicep
Dentro de seu arquivo Bicep, você pode criar suas próprias funções. Essas funções estão disponíveis para uso em seu arquivos Bicep. As funções definidas pelo usuário são separadas das funções de Bicep padrão que estão automaticamente disponíveis nos seus arquivos Bicep. Crie suas próprias funções quando tiver expressões complicadas que são usadas repetidamente em seus arquivos do Bicep.
A CLI do Bicep versão 0.26.X ou superior é necessária para usar esse recurso.
Limitações
Ao definir uma função de usuário, há algumas restrições:
- A função não pode acessar variáveis.
- A função só pode usar os parâmetros que são definidos na função.
- A função não pode usar a função de referência ou qualquer uma das funções de lista.
- Os parâmetros para a função não podem ter valores padrão.
Definir a função
Use a instrução func
para definir funções definidas pelo usuário.
func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>
Exemplos
Os exemplos a seguir mostram como definir e usar funções definidas pelo usuário:
func buildUrl(https bool, hostname string, path string) string => '${https ? 'https' : 'http'}://${hostname}${empty(path) ? '' : '/${path}'}'
func sayHelloString(name string) string => 'Hi ${name}!'
func sayHelloObject(name string) object => {
hello: 'Hi ${name}!'
}
func nameArray(name string) array => [
name
]
func addNameArray(name string) array => [
'Mary'
'Bob'
name
]
output azureUrl string = buildUrl(true, 'microsoft.com', 'azure')
output greetingArray array = map(['Evie', 'Casper'], name => sayHelloString(name))
output greetingObject object = sayHelloObject('John')
output nameArray array = nameArray('John')
output addNameArray array = addNameArray('John')
As saídas dos exemplos anteriores são:
Nome | Tipo | Valor |
---|---|---|
azureUrl | String | https://microsoft.com/azure |
greetingArray | Array | ["Hi Evie!","Hi Casper!"] |
greetingObject | Objeto | {"hello":"Hi John!"} |
nameArray | Array | ["John"] |
addNameArray | Array | ["Mary","Bob","John"] |
Com a CLI do Bicep versão 0.23.X ou superior, você tem a flexibilidade de invocar outra função definida pelo usuário em uma função definida pelo usuário. No exemplo anterior, com a definição de função de sayHelloString
, você pode redefinir a função sayHelloObject
como:
func sayHelloObject(name string) object => {
hello: sayHelloString(name)
}
As funções definidas pelo usuário dão suporte ao uso de tipos de dados definidos pelo usuário. Por exemplo:
@minValue(0)
type positiveInt = int
func typedArg(input string[]) positiveInt => length(input)
param inArray array = [
'Bicep'
'ARM'
'Terraform'
]
output elements positiveInt = typedArg(inArray)
O resultado do exemplo anterior é:
Nome | Tipo | Valor |
---|---|---|
elementos | positiveInt | 3 |
Próximas etapas
- Para saber mais sobre a estrutura e sintaxe de um arquivo Bicep, confira Noções básicas de estrutura e sintaxe de arquivos Bicep.
- Para obter uma lista das funções Bicep disponíveis, consulte Funções Bicep.