Megosztás a következőn keresztül:


Felhasználó által definiált függvények a Bicepben

A Bicep-fájlban saját függvényeket hozhat létre. Ezek a függvények a Bicep-fájlokban használhatók. A felhasználó által definiált függvények eltérnek a Bicep-fájlokban automatikusan elérhető szokásos Bicep-függvényektől . Saját függvényeket hozhat létre, ha bonyolult kifejezésekkel rendelkezik, amelyeket a Bicep-fájlokban ismétlődően használnak. A felhasználó által definiált függvények automatikusan engedélyezik a 2.0-s verziójú kódgenerálást.

A funkció használatához a Bicep CLI 0.26.X vagy újabb verziója szükséges.

Korlátozások

A felhasználói függvények definiálásakor bizonyos korlátozások vonatkoznak:

  • A függvény nem fér hozzá a változókhoz.
  • A függvény csak a függvényben definiált paramétereket használhatja.
  • A függvény nem használhatja a referenciafüggvényt vagy a listafüggvényeket .
  • A függvény paraméterei nem tartalmazhatnak alapértelmezett értékeket.

Függvények definiálása

Az utasítás használatával func definiálhat felhasználó által definiált függvényeket.

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

Példák

Az alábbi példák a felhasználó által definiált függvények definiálására és használatára mutatnak be példát:

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

Az előző példák kimenetei a következők:

Név Típus Érték
azureUrl Sztring https://microsoft.com/azure
greetingArray Tömb ["Hi Evie!","Hi Casper!"]
greetingObject Objektum {"hello":"Hi John!"}
nameArray Tömb ["János"]
addNameArray Tömb ["Mary","Bob","John"]

A Bicep CLI 0.23.X-es vagy újabb verziójával rugalmasan hívhat meg egy felhasználó által definiált függvényt egy felhasználó által definiált függvényen belül. Az előző példában a függvény definíciójával sayHelloStringújradefinitálhatja a függvényt a sayHelloObject következő módon:

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

A felhasználó által definiált függvények támogatják a felhasználó által definiált adattípusok használatát. Példa:

@minValue(0)
type positiveInt = int

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

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

output elements positiveInt = typedArg(inArray)

Az előző példa kimenete a következő:

Név Típus Érték
Elemek positiveInt 3

Dekorátorok használata

A dekorátorok formátuma @expression a függvénydeklarációk fölé kerül. Az alábbi táblázat a függvényekhez elérhető dekorátorokat mutatja be.

Lakberendező Argumentum Leírás
leírás húr Adja meg a függvény leírását.
kivitel Nincs Azt jelzi, hogy a függvény egy másik Bicep-fájl által importálható.
metaadatok object A függvényre alkalmazandó egyéni tulajdonságok. Olyan leírástulajdonságokat is tartalmazhat, amelyek egyenértékűek a leírás dekorátorával.

A dekorátorok a sys névtérben találhatók. Ha meg kell különböztetnie egy dekoratőrt egy másik, azonos nevű elemtől, akkor a dekoratőrt a következővel kell előtagolnia sys: . Ha például a Bicep-fájl tartalmaz egy elnevezett descriptionváltozót, a leírás-dekorátor használatakor hozzá kell adnia a sys névteret.

Leírás

Magyarázat hozzáadásához adjon hozzá egy leírást a függvénydeklarációhoz. Példa:

@description('The say hello function.')
func sayHelloString(name string) string => 'Hi ${name}!'

Markdown formátumú szöveg használható a leírás szövegéhez.

Exportálás

A függvény más Bicep-fájlokkal való megosztására használható @export() . További információ: Változók, típusok és függvények exportálása.

Metaadatok

Ha egyéni tulajdonságokat szeretne alkalmazni egy felhasználó által definiált függvényre, adjon hozzá egy metaadat-dekorátort. A metaadatokon belül definiáljon egy egyéni neveket és értékeket tartalmazó objektumot. A metaadatokhoz definiált objektum bármilyen nevet és típust tartalmazhat.

Ezzel a dekorátorsal nyomon követheti a függvény azon információinak nyomon követését, amelyeket nem érdemes hozzáadni a leíráshoz.

@description('Configuration values that are applied when the application starts.')
@metadata({
  source: 'database'
  contact: 'Web team'
})
type settings object

Ha egy dekoratőrnek @metadata() olyan tulajdonságot ad meg, amely ütközik egy másik dekoratorral, az a dekorátor mindig elsőbbséget élvez a @metadata() dekorátor minden tulajdonságával szemben. Az értéken belüli @metadata() ütköző tulajdonság tehát redundáns, és lecserélődik. További információ: Nem ütköző metaadatok.

Következő lépések

  • A Bicep-fájlok szerkezetének és szintaxisának megismeréséhez tekintse meg a Bicep-fájlok szerkezetét és szintaxisát.
  • Az elérhető Bicep-függvények listáját a Bicep-függvények című témakörben találja.