Funzioni definite dall'utente in Bicep
All'interno del file Bicep è possibile creare funzioni personalizzate. Queste funzioni sono disponibili per l'uso nei file Bicep. Le funzioni definite dall'utente sono separate dalle funzioni Bicep standard disponibili automaticamente nei file Bicep. Creare funzioni personalizzate quando sono presenti espressioni complesse che vengono usate ripetutamente nei file Bicep.
Limiti
Quando si crea una funzione definita dall'utente, è necessario tenere presente alcune restrizioni:
- La funzione non può accedere alle variabili.
- La funzione può usare solo i parametri definiti in essa.
- La funzione non può usare la funzione di riferimento o nessuna delle funzioni di elenco .
- I parametri della funzione non possono avere valori predefiniti.
Definire la funzione
Usare l'istruzione func
per definire funzioni definite dall'utente.
func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>
Esempi
Gli esempi seguenti illustrano come definire e usare funzioni definite dall'utente:
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')
Gli output degli esempi precedenti sono:
Nome | Type | Valore |
---|---|---|
azureUrl | String | https://microsoft.com/azure |
greetingArray | Matrice | ["Hi Evie!","Hi Casper!"] |
greetingObject | Object | {"hello":"Hi John!"} |
nameArray | Matrice | ["John"] |
addNameArray | Matrice | ["Mary","Bob","John"] |
Con l'interfaccia della riga di comando di Bicep versione 0.23.X o successiva, è possibile richiamare un'altra funzione definita dall'utente all'interno di una funzione definita dall'utente. Nell'esempio precedente, con la definizione di funzione di sayHelloString
, è possibile ridefinire la sayHelloObject
funzione come:
func sayHelloObject(name string) object => {
hello: sayHelloString(name)
}
Le funzioni definite dall'utente supportano l'uso di tipi di dati definiti dall'utente. Ad esempio:
@minValue(0)
type positiveInt = int
func typedArg(input string[]) positiveInt => length(input)
param inArray array = [
'Bicep'
'ARM'
'Terraform'
]
output elements positiveInt = typedArg(inArray)
L'output dell'esempio precedente è:
Nome | Type | Valore |
---|---|---|
Elementi figlio | positiveInt | 3 |
Passaggi successivi
- Per informazioni sulla struttura e la sintassi dei file Bicep, vedere Informazioni sulla struttura e la sintassi dei file Bicep.
- Per un elenco delle funzioni Bicep disponibili, vedere Funzioni Bicep.