إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة وظائف lambda لاستخدامها في Bicep. تعبيرات Lambda (أو دالات lambda) هي في الأساس كتل من التعليمات البرمجية التي يمكن تمريرها كوسيطة. يمكن أن تأخذ معلمات متعددة، ولكن تقتصر على سطر واحد من التعليمات البرمجية. في Bicep، تعبير lambda بهذا التنسيق:
<lambda variable> => <expression>
إشعار
يتم دعم وظائف lambda فقط في إصدار Bicep CLI 0.10.X أو أعلى.
القيود
تحتوي وظيفة Bicep lambda على هذه القيود:
- يمكن تحديد تعبير Lambda مباشرة فقط كوسيطات دالة في هذه الدالات:
filter()وgroupBy()sort()map()mapValues()reduce().toObject() - استخدام متغيرات lambda (المتغيرات المؤقتة المستخدمة في تعبيرات lambda) داخل الوصول إلى صفيف الموارد أو الوحدة النمطية غير مدعوم حاليا.
- استخدام متغيرات lambda داخل الدالة
listKeysغير مدعوم حاليا. - استخدام متغيرات lambda داخل الدالة المرجعية غير مدعوم حاليا.
filter
filter(inputArray, lambda expression)
تصفية صفيف مع دالة تصفية مخصصة.
مساحة الاسم: sys.
المعلمات
| المعلمة | المطلوب | نوع | الوصف |
|---|---|---|---|
| inputArray | نعم | صفيف | الصفيف المراد تصفيته. |
| تعبير lambda | نعم | تعبير | يتم تطبيق تعبير lambda على كل عنصر صفيف إدخال. إذا كانت النتيجة صحيحة، يتم تضمين العنصر في صفيف الإخراج؛ وإلا، يتم تجاهل العنصر. |
قيمة الإرجاع
صفيف.
الأمثلة
توضح الأمثلة التالية كيفية استخدام الدالة filter .
var dogs = [
{
name: 'Evie'
age: 5
interests: ['Ball', 'Frisbee']
}
{
name: 'Casper'
age: 3
interests: ['Other dogs']
}
{
name: 'Indy'
age: 2
interests: ['Butter']
}
{
name: 'Cira'
age: 8
interests: ['Rubs']
}
]
output oldDogs array = filter(dogs, dog => dog.age >=5)
output dogNameIndex array = filter(dogs, (val, i) => i < 2 && substring(val.name, 0, 1) == 'C')
المخرجات من المثال السابق:
| Name | نوع | القيمة |
|---|---|---|
| oldDogs | صفيف | [{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
| dogNameIndex | صفيف | [{"name":"Casper","age":3,"interests":["Other dogs"]}] |
يسرد oldDogs الكلاب التي هي خمسة أو أكبر؛ يعرف dogNameIndex الكلاب التي يقل رقم فهرسها عن اثنين ويبدأ اسمها بالحرف "C".
var itemForLoop = [for item in range(0, 10): item]
output filteredLoop array = filter(itemForLoop, i => i > 5)
output isEven array = filter(range(0, 10), i => 0 == i % 2)
المخرجات من المثال السابق:
| Name | نوع | القيمة |
|---|---|---|
| تم تصفيةLoop | صفيف | [6, 7, 8, 9] |
| isEven | صفيف | [0, 2, 4, 6, 8] |
يعرض filterdLoop الأرقام الموجودة في صفيف أكبر من 5؛ ويعرض isEven الأرقام الزوجية في الصفيف.
groupBy
groupBy(inputArray, lambda expression)
إنشاء كائن بقيم صفيف من صفيف، باستخدام شرط تجميع.
مساحة الاسم: sys.
المعلمات
| المعلمة | المطلوب | نوع | الوصف |
|---|---|---|---|
| inputArray | نعم | صفيف | صفيف التجميع. |
| تعبير lambda | نعم | تعبير | يتم تطبيق تعبير lambda على كل عنصر صفيف إدخال، وتجميع العناصر باستخدام شرط التجميع. |
قيمة الإرجاع
كائن.
الأمثلة
يوضح المثال التالي كيفية استخدام الوظيفةgroupBy.
var inputArray = ['foo', 'bar', 'baz']
output outObject object = groupBy(inputArray, x => substring(x, 0, 1))
الإخراج من المثال السابق:
| Name | نوع | القيمة |
|---|---|---|
| outObject | الكائن | {"f":["foo"],"b":["bar","baz"]} |
يظهر outObject كائنا يجمع عناصر الصفيف بأحرفها الأولى.
map
map(inputArray, lambda expression)
تطبيق دالة تعيين مخصصة على كل عنصر من عناصر الصفيف.
مساحة الاسم: sys.
المعلمات
| المعلمة | المطلوب | نوع | الوصف |
|---|---|---|---|
| inputArray | نعم | صفيف | الصفيف المراد تعيينه. |
| تعبير lambda | نعم | تعبير | يتم تطبيق تعبير lambda على كل عنصر صفيف إدخال، من أجل إنشاء صفيف الإخراج. |
قيمة الإرجاع
صفيف.
مثال
يوضح المثال التالي كيفية استخدام الوظيفةmap.
var dogs = [
{
name: 'Evie'
age: 5
interests: ['Ball', 'Frisbee']
}
{
name: 'Casper'
age: 3
interests: ['Other dogs']
}
{
name: 'Indy'
age: 2
interests: ['Butter']
}
{
name: 'Kira'
age: 8
interests: ['Rubs']
}
]
output dogNames array = map(dogs, dog => dog.name)
output sayHi array = map(dogs, dog => 'Hello ${dog.name}!')
output mapArray array = map(range(0, length(dogs)), i => {
i: i
dog: dogs[i].name
greeting: 'Ahoy, ${dogs[i].name}!'
})
output mapArrayIndex array = map(dogs, (x, i) => { index: i, val: x.name})
المخرجات من المثال السابق هي:
| Name | نوع | القيمة |
|---|---|---|
| أسماء الكلاب | صفيف | ["إيفي"، "كاسبر"، "إندي"، "كيرا"] |
| sayHi | صفيف | ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"] |
| mapArray | صفيف | [{"i":0,"dog":"Evie","greeting":"Ahoy, Evie!"},{"i":1,"dog":"Casper","greeting":"Ahoy, Casper!"},{"i":2,"dog":"Indy","greeting":"Ahoy, Indy!"},{"i":3,"dog":"Kira","greeting":"Ahoy, Kira!"}] |
| mapArrayIndex | صفيف | [{"index":0,"val":"Evie"},{"index":1,"val":"Casper"},{"index":2,"val":"Indy"},{"index":3,"val":"Kira"}] |
تظهر أسماء الكلاب أسماء الكلاب من صفيف الكائنات؛ sayHi يسلسل "مرحبا" وكل اسم من أسماء الكلاب؛ ينشئ mapArray وmapArrayIndex صفيفين آخرين من الكائنات.
قيم الخريطة
mapValues(inputObject, lambda expression)
إنشاء كائن من كائن إدخال، باستخدام تعبير lambda لتعيين القيم.
مساحة الاسم: sys.
المعلمات
| المعلمة | المطلوب | نوع | الوصف |
|---|---|---|---|
| inputObject | نعم | كائن | الكائن المراد تعيينه. |
| تعبير lambda | نعم | تعبير | تعبير lambda المستخدم لتعيين القيم. |
قيمة الإرجاع
كائن.
مثال
يوضح المثال التالي كيفية استخدام الوظيفةmapValues.
var inputObject = { foo: 'foo', bar: 'bar' }
output mapObject object = mapValues(inputObject, val => toUpper(val))
المخرجات من المثال السابق هي:
| Name | نوع | القيمة |
|---|---|---|
| mapObject | الكائن | {foo: 'FOO'، الشريط: 'BAR'} |
ينشئ mapObject كائنا آخر بالقيم في الأحرف العلوية.
reduce
reduce(inputArray, initialValue, lambda expression)
تقليل صفيف مع دالة تقليل مخصصة.
مساحة الاسم: sys.
المعلمات
| المعلمة | المطلوب | نوع | الوصف |
|---|---|---|---|
| inputArray | نعم | صفيف | الصفيف المراد تقليله. |
| القيمة الأولية | نعم | أي | القيمة الأولية. |
| تعبير lambda | نعم | تعبير | تعبير lambda المستخدم لتجميع القيمة الحالية والقيمة التالية. |
قيمة الإرجاع
اي.
مثال
توضح الأمثلة التالية كيفية استخدام الدالة reduce .
var dogs = [
{
name: 'Evie'
age: 5
interests: ['Ball', 'Frisbee']
}
{
name: 'Casper'
age: 3
interests: ['Other dogs']
}
{
name: 'Indy'
age: 2
interests: ['Butter']
}
{
name: 'Kira'
age: 8
interests: ['Rubs']
}
]
var ages = map(dogs, dog => dog.age)
output totalAge int = reduce(ages, 0, (cur, next) => cur + next)
output totalAgeAdd1 int = reduce(ages, 1, (cur, next) => cur + next)
output oddAge int = reduce(ages, 0, (cur, next, i) => (i % 2 == 0) ? cur + next : cur)
المخرجات من المثال السابق هي:
| Name | نوع | القيمة |
|---|---|---|
| totalAge | العدد الصحيح | 18 |
| totalAgeAdd1 | العدد الصحيح | 19 |
| فردية | العدد الصحيح | 7 |
مجموع إجمالي العمر من الكلاب؛ totalAgeAdd1 له قيمة أولية من 1، ويضيف جميع الأعمار الكلب إلى القيم الأولية. يلخص oddAge أعمار الكلاب الموجودة في فهارس زوجية، وتحديدا 5 (Evie) و2 (Indy).
output reduceObjectUnion object = reduce([
{ foo: 123 }
{ bar: 456 }
{ baz: 789 }
], {}, (cur, next) => union(cur, next))
المخرجات من المثال السابق هي:
| Name | نوع | القيمة |
|---|---|---|
| reduceObjectUnion | كائن | {"foo":123,"bar":456,"baz":789} |
ترجع الدالة union كائنا واحدا مع كافة العناصر من المعلمات. يوحد استدعاء الدالة أزواج القيمة الرئيسية للكائنات في كائن جديد.
sort
sort(inputArray, lambda expression)
فرز صفيف باستخدام دالة فرز مخصصة.
مساحة الاسم: sys.
المعلمات
| المعلمة | المطلوب | نوع | الوصف |
|---|---|---|---|
| inputArray | نعم | صفيف | الصفيف المراد فرزه. |
| تعبير lambda | نعم | تعبير | تعبير lambda المستخدم لمقارنة عنصري صفيف للطلب. إذا كان صحيحا، فسيتم ترتيب العنصر الثاني بعد العنصر الأول في صفيف الإخراج. |
قيمة الإرجاع
صفيف.
مثال
يوضح المثال التالي كيفية استخدام الوظيفةsort.
var dogs = [
{
name: 'Evie'
age: 5
interests: ['Ball', 'Frisbee']
}
{
name: 'Casper'
age: 3
interests: ['Other dogs']
}
{
name: 'Indy'
age: 2
interests: ['Butter']
}
{
name: 'Kira'
age: 8
interests: ['Rubs']
}
]
output dogsByAge array = sort(dogs, (a, b) => a.age < b.age)
يفرز الإخراج من المثال السابق كائنات الكلب من الأصغر إلى الأقدم:
| Name | نوع | القيمة |
|---|---|---|
| كلاب هاوية | صفيف | [{"name":"Indy","age":2,"interests":["Butter"]},{"name":"Casper","age":3,"interests":["Other dogs"]},{"name" ":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
toObject
toObject(inputArray, lambda expression, [lambda expression])
تحويل صفيف إلى كائن باستخدام دالة مفتاح مخصصة ودالة قيمة مخصصة اختيارية. عرض عناصر حول تحويل كائن إلى صفيف.
مساحة الاسم: sys.
المعلمات
| المعلمة | المطلوب | نوع | الوصف |
|---|---|---|---|
| inputArray | نعم | صفيف | الصفيف المستخدم لإنشاء كائن. |
| تعبير lambda | نعم | تعبير | تعبير lambda المستخدم لتوفير دالة تقييم المفتاح. |
| تعبير lambda | لا | تعبير | تعبير lambda المستخدم لتوفير دالة تقييم القيمة. |
قيمة الإرجاع
كائن.
مثال
يوضح المثال التالي كيفية استخدام الدالة toObject مع المعلمتين المطلوبتين:
var dogs = [
{
name: 'Evie'
age: 5
interests: [ 'Ball', 'Frisbee' ]
}
{
name: 'Casper'
age: 3
interests: [ 'Other dogs' ]
}
{
name: 'Indy'
age: 2
interests: [ 'Butter' ]
}
{
name: 'Kira'
age: 8
interests: [ 'Rubs' ]
}
]
output dogsObject object = toObject(dogs, entry => entry.name)
ينشئ المثال السابق كائنا استنادا إلى صفيف.
| Name | نوع | القيمة |
|---|---|---|
| dogsObject | الكائن | {"Evie":{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},"Casper":{"name":"Casper","age":3,"interests":["Other dogs"]},"Indy":{"name":"Indy","age":2,"interests":["Butter"]},"Kira":{"name":"Kira","age":8,"interests":["Rubs"]}} |
توفر الدالة التالية toObject مع المعلمة الثالثة نفس الإخراج.
output dogsObject object = toObject(dogs, entry => entry.name, entry => entry)
يوضح المثال التالي كيفية استخدام الدالة toObject مع ثلاث معلمات.
var dogs = [
{
name: 'Evie'
properties: {
age: 5
interests: [ 'Ball', 'Frisbee' ]
}
}
{
name: 'Casper'
properties: {
age: 3
interests: [ 'Other dogs' ]
}
}
{
name: 'Indy'
properties: {
age: 2
interests: [ 'Butter' ]
}
}
{
name: 'Kira'
properties: {
age: 8
interests: [ 'Rubs' ]
}
}
]
output dogsObject object = toObject(dogs, entry => entry.name, entry => entry.properties)
ينشئ المثال السابق كائنا استنادا إلى صفيف.
| Name | نوع | القيمة |
|---|---|---|
| dogsObject | الكائن | {"Evie":{"age":5,"interests":["Ball","Frisbee"]},"Casper":{"age":3,"interests":["Other dogs"]},"Indy":{"age":2,"interests":["Butter"]},"Kira":{"age":8,"interests":["Rubs"]}} |
الخطوات التالية
- راجع وظائف Bicep - صفائف لمزيد من دوال Bicep ذات الصلة بالصفيف.