الوظائف المعرفة من قبل المستخدم في Bicep

ضمن ملف Bicep الخاص بك، يمكنك إنشاء وظائفك الخاصة. تتوفر هذه الدالات للاستخدام في ملفات Bicep. الدالات المعرفة من قبل المستخدم منفصلة عن وظائف Bicep القياسية التي تتوفر تلقائيا داخل ملفات Bicep الخاصة بك. إنشاء الدالات الخاصة بك عندما يكون لديك تعبيرات معقدة يتم استخدامها بشكل متكرر في ملفات Bicep الخاصة بك.

مطلوب Bicep CLI الإصدار 0.26.X أو أعلى لاستخدام هذه الميزة.

القيود

عند تحديد وظيفة المستخدم، هناك بعض القيود:

  • لا يمكن للدالة الوصول إلى المتغيرات.
  • يمكن للوظيفة فقط استخدام المعلمات التي تم تحديدها في الوظيفة.
  • لا يمكن للدالة استخدام الوظيفة reference أو أي من وظائف list.
  • لا يمكن أن تحتوي معلمات الدالة على قيم افتراضية.

عرِّف الدالة

استخدم العبارة func لتعريف الوظائف المعرفة من قبل المستخدم.

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

الأمثلة

توضح الأمثلة التالية كيفية تعريف واستخدام الوظائف المعرفة من قبل المستخدم:

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

المخرجات من الأمثلة السابقة هي:

Name نوع القيمة‬
azureUrl السلسلة‬ https://microsoft.com/azure
تحيةArray صفيف ["مرحبا إيفي!"،"مرحبا كاسبر!"]
greetingObject ‏‏الكائن {"hello":"Hi John!"}
nameArray صفيف ["جون"]
addNameArray صفيف ["ماري"، "بوب"، "جون"]

باستخدام Bicep CLI الإصدار 0.23.X أو أعلى، لديك المرونة لاستدعاء دالة أخرى معرفة من قبل المستخدم ضمن دالة معرفة من قبل المستخدم. في المثال السابق، مع تعريف الدالة sayHelloStringل ، يمكنك إعادة تعريف الدالة sayHelloObject ك:

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

تدعم الوظائف المعرفة من قبل المستخدم استخدام أنواع البيانات المعرفة من قبل المستخدم. على سبيل المثال:

@minValue(0)
type positiveInt = int

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

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

output elements positiveInt = typedArg(inArray)

المخرجات من المثال السابق هي:

Name نوع القيمة‬
عناصر positiveInt 3

الخطوات التالية