Benutzerdefinierte Funktionen in Bicep

In Ihrer Bicep-Datei können Sie Ihre eigenen Funktionen erstellen. Diese Funktionen stehen dann zur Verwendung in Ihren Bicep-Dateien zur Verfügung. Benutzerdefinierte Funktionen sind von den standardmäßigen Bicep-Funktionen getrennt, die automatisch in der Bicep-Datei verfügbar sind. Erstellen Sie eigene Funktionen, wenn Sie über komplizierte Ausdrücke verfügen, die in Ihren Bicep-Dateien wiederholt verwendet werden.

Um diese Funktion nutzen zu können, ist Bicep CLI Version 0.26.X oder höher erforderlich.

Begrenzungen

Beim Definieren einer benutzerdefinierten Funktion gelten einige Einschränkungen:

  • Die Funktion kann nicht auf Variablen zugreifen.
  • Die Funktion kann nur Parameter verwenden, die in der Funktion definiert sind.
  • Die Funktion kann nicht die reference-Funktion oder eine der list-Funktionen verwenden.
  • Für die Parameter der Funktion können keine Standardwerte verwendet werden.

Definieren der Funktion

Verwenden Sie die func-Anweisung, um benutzerdefinierte Funktionen zu definieren.

func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>

Beispiele

Die folgenden Beispiele zeigen, wie Sie benutzerdefinierte Funktionen definieren und verwenden:

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')

Die Ausgaben aus den vorherigen Beispielen sind:

Name type Wert
azureUrl String https://microsoft.com/azure
greetingArray Array ["Hi Evie!","Hi Casper!"]
greetingObject Object {"hello":"Hi John!"}
nameArray Array ["John"]
addNameArray Array ["Mary","Bob","John"]

Mit Bicep CLI Version 0.23.X oder höher haben Sie die Flexibilität, eine benutzerdefinierte Funktion innerhalb einer anderen benutzerdefinierten Funktion aufzurufen. Im vorangegangenen Beispiel können Sie mit der Funktionsdefinition von sayHelloString die Funktion sayHelloObject wie folgt umdefinieren:

func sayHelloObject(name string) object => {
  hello: sayHelloString(name)
}

Benutzerdefinierte Funktionen unterstützen die Verwendung benutzerdefinierter Datentypen. Beispiel:

@minValue(0)
type positiveInt = int

func typedArg(input string[]) positiveInt => length(input)

param inArray array = [
  'Bicep'
  'ARM'
  'Terraform'
]

output elements positiveInt = typedArg(inArray)

Die Ausgabe aus dem vorherigen Beispiel lautet wie folgt:

Name type Wert
Elemente positivInt 3

Nächste Schritte