Door de gebruiker gedefinieerde functies in Bicep
Binnen uw Bicep-bestand kunt u uw eigen functies maken. Deze functies zijn beschikbaar voor gebruik in uw Bicep-bestanden. Door de gebruiker gedefinieerde functies zijn gescheiden van de standaard Bicep-functies die automatisch beschikbaar zijn in uw Bicep-bestanden. Maak uw eigen functies wanneer u gecompliceerde expressies hebt die herhaaldelijk worden gebruikt in uw Bicep-bestanden.
Bicep CLI versie 0.26.X of hoger is vereist voor het gebruik van deze functie.
Beperkingen
Bij het definiëren van een gebruikersfunctie gelden enkele beperkingen:
- De functie heeft geen toegang tot variabelen.
- De functie kan alleen parameters gebruiken die zijn gedefinieerd in de functie.
- De functie kan de verwijzingsfunctie of een van de lijstfuncties niet gebruiken.
- Parameters voor de functie kunnen geen standaardwaarden hebben.
De functie definiëren
Gebruik de instructie om door de func
gebruiker gedefinieerde functies te definiëren.
func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>
Voorbeelden
In de volgende voorbeelden ziet u hoe u door de gebruiker gedefinieerde functies definieert en gebruikt:
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')
De uitvoer van de voorgaande voorbeelden is:
Name | Type | Weergegeven als |
---|---|---|
azureUrl | String | https://microsoft.com/azure |
greetingArray | Matrix | ["Hi Evie!","Hi Neerkom!"] |
greetingObject | Object | {"hallo":"Hallo John!"} |
nameArray | Matrix | ["John"] |
addNameArray | Matrix | ["Mary","Bob","John"] |
Met Bicep CLI versie 0.23.X of hoger hebt u de flexibiliteit om een andere door de gebruiker gedefinieerde functie aan te roepen binnen een door de gebruiker gedefinieerde functie. In het voorgaande voorbeeld, met de functiedefinitie van sayHelloString
, kunt u de sayHelloObject
functie opnieuw definiëren als:
func sayHelloObject(name string) object => {
hello: sayHelloString(name)
}
Door de gebruiker gedefinieerde functies ondersteunen het gebruik van door de gebruiker gedefinieerde gegevenstypen. Voorbeeld:
@minValue(0)
type positiveInt = int
func typedArg(input string[]) positiveInt => length(input)
param inArray array = [
'Bicep'
'ARM'
'Terraform'
]
output elements positiveInt = typedArg(inArray)
De uitvoer uit het voorgaande voorbeeld is:
Name | Type | Weergegeven als |
---|---|---|
Elementen | positiveInt | 3 |