Delen via


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

Volgende stappen