Användardefinierade funktioner i Bicep
I Bicep-filen kan du skapa dina egna funktioner. Dessa funktioner är tillgängliga för användning i dina Bicep-filer. Användardefinierade funktioner är separata från standardfunktionerna för Bicep som automatiskt är tillgängliga i dina Bicep-filer. Skapa dina egna funktioner när du har komplicerade uttryck som används upprepade gånger i Bicep-filerna.
Bicep CLI version 0.26.X eller senare krävs för att använda den här funktionen.
Begränsningar
När du definierar en användarfunktion finns det vissa begränsningar:
- Funktionen kan inte komma åt variabler.
- Funktionen kan bara använda parametrar som definieras i funktionen.
- Funktionen kan inte använda referensfunktionen eller någon av listfunktionerna.
- Parametrar för funktionen kan inte ha standardvärden.
Definiera funktionen
Använd -instruktionen func
för att definiera användardefinierade funktioner.
func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>
Exempel
I följande exempel visas hur du definierar och använder användardefinierade funktioner:
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')
Utdata från föregående exempel är:
Namn | Typ | Värde |
---|---|---|
azureUrl | String | https://microsoft.com/azure |
greetingArray | Matris | ["Hej Evie!","Hej Casper!"] |
greetingObject | Objekt | {"hej":"Hej John!"} |
nameArray | Matris | ["John"] |
addNameArray | Matris | ["Mary","Bob","John"] |
Med Bicep CLI version 0.23.X eller senare har du flexibiliteten att anropa en annan användardefinierad funktion i en användardefinierad funktion. I föregående exempel med funktionsdefinitionen för sayHelloString
kan du omdefiniera sayHelloObject
funktionen som:
func sayHelloObject(name string) object => {
hello: sayHelloString(name)
}
Användardefinierade funktioner stöder användning av användardefinierade datatyper. Till exempel:
@minValue(0)
type positiveInt = int
func typedArg(input string[]) positiveInt => length(input)
param inArray array = [
'Bicep'
'ARM'
'Terraform'
]
output elements positiveInt = typedArg(inArray)
Utdata från föregående exempel är:
Namn | Typ | Värde |
---|---|---|
Element | positiveInt | 3 |
Nästa steg
- Mer information om Bicep-filstrukturen och syntaxen finns i Förstå strukturen och syntaxen för Bicep-filer.
- En lista över tillgängliga Bicep-funktioner finns i Bicep-funktioner.