Bicep için Lambda işlevleri
Bu makalede, Bicep'te kullanılacak lambda işlevleri açıklanmaktadır. Lambda ifadeleri (veya lambda işlevleri) temelde bağımsız değişken olarak geçirilebilen kod bloklarıdır. Birden çok parametre alabilirler, ancak tek bir kod satırıyla sınırlandırılırlar. Bicep'te lambda ifadesi şu biçimdedir:
<lambda variable> => <expression>
Not
Lambda işlevleri yalnızca Bicep CLI 0.10.X veya üzeri sürümlerde desteklenir.
Sınırlamalar
Bicep lambda işlevi şu sınırlamalara sahiptir:
- Lambda ifadesi yalnızca şu işlevlerde işlev bağımsız değişkenleri olarak doğrudan belirtilebilir:
filter()
,map()
,reduce()
,sort()
vetoObject()
. - Kaynak veya modül dizisi erişimi içinde lambda değişkenlerinin (lambda ifadelerinde kullanılan geçici değişkenler) kullanılması şu anda desteklenmemektedir.
- İşlevin içinde
listKeys
lambda değişkenlerinin kullanılması şu anda desteklenmemektedir. - Başvuru işlevinin içinde lambda değişkenlerinin kullanılması şu anda desteklenmemektedir.
filtrele
filter(inputArray, lambda expression)
Bir diziyi özel filtreleme işleviyle filtreler.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
inputArray | Yes | dizi | Filtre uygulamak için dizi. |
lambda ifadesi | Yes | ifade | Lambda ifadesi her giriş dizisi öğesine uygulanır. Sonuç true ise, öğe çıkış dizisine eklenir; aksi takdirde, öğe atılır. |
Dönüş değeri
Bir dizi.
Örnekler
Aşağıdaki örneklerde işlevin nasıl kullanılacağı gösterilmektedir filter
.
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 oldDogs array = filter(dogs, dog => dog.age >=5)
Yukarıdaki örnekten alınan çıkışta beş veya daha büyük olan köpekler gösterilir:
Adı | Tür | Değer |
---|---|---|
oldDogs | Dizi | [{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
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)
Yukarıdaki örnekten çıktı:
Adı | Tür | Değer |
---|---|---|
filteredLoop | Dizi | [6, 7, 8, 9] |
isEven | Dizi | [0, 2, 4, 6, 8] |
filterdLoop, 5'ten büyük bir dizideki sayıları, isEven ise dizideki çift sayıları gösterir.
map
map(inputArray, lambda expression)
Bir dizinin her öğesine özel eşleme işlevi uygular.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
inputArray | Yes | dizi | Eşlenecek dizi. |
lambda ifadesi | Yes | ifade | Çıkış dizisini oluşturmak için her giriş dizisi öğesine uygulanan lambda ifadesi. |
Dönüş değeri
Bir dizi.
Örnek
Aşağıdaki örnekte işlevin nasıl kullanılacağı gösterilmektedir 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 mapObject array = map(range(0, length(dogs)), i => {
i: i
dog: dogs[i].name
greeting: 'Ahoy, ${dogs[i].name}!'
})
Yukarıdaki örnekten alınan çıkış:
Adı | Tür | Değer |
---|---|---|
dogNames | Dizi | ["Evie","Casper","Indy","Kira"] |
sayHi | Dizi | ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"] |
mapObject | Dizi | [{"i":0,"dog":"Evie","greeting":"Ahoy, Evie!"},{"i":1,"köpek":"Casper","greeting":"Ahoy, Casper!"},{"i":2,"köpek":"Indy","greeting":"Ahoy, Indy!"},{"i":3,"köpek":"Kira","greeting":"Ahoy, Kira!"}] |
dogNames , nesne dizisinden köpek adlarını gösterir; sayHi , "Hello" ve köpek adlarının her birini birleştirir ve mapObject başka bir nesne dizisi oluşturur.
Azaltmak
reduce(inputArray, initialValue, lambda expression)
Bir diziyi özel bir azaltma işleviyle azaltır.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
inputArray | Yes | dizi | Azaltacak dizi. |
ınitialvalue | Yes | herhangi bir | İlk değer. |
lambda ifadesi | Yes | ifade | Geçerli değeri ve sonraki değeri toplamak için kullanılan lambda ifadesi. |
Dönüş değeri
Herhangi biri.
Örnek
Aşağıdaki örneklerde işlevin nasıl kullanılacağı gösterilmektedir 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)
Yukarıdaki örnekten alınan çıkış:
Adı | Tür | Değer |
---|---|---|
totalAge | int | 18 |
totalAgeAdd1 | int | 19 |
totalAge , köpeklerin yaşlarını özetler; totalAgeAdd1'in başlangıç değeri 1'tir ve tüm köpek yaşlarını ilk değerlere ekler.
output reduceObjectUnion object = reduce([
{ foo: 123 }
{ bar: 456 }
{ baz: 789 }
], {}, (cur, next) => union(cur, next))
Yukarıdaki örnekten alınan çıkış:
Adı | Tür | Değer |
---|---|---|
reduceObjectUnion | nesne | {"foo":123,"bar":456,"baz":789} |
union işlevi, parametrelerdeki tüm öğeleri içeren tek bir nesne döndürür. İşlev çağrısı, nesnelerin anahtar değer çiftlerini yeni bir nesne olarak birleştirir.
sıralayın
sort(inputArray, lambda expression)
Bir diziyi özel sıralama işleviyle sıralar.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
inputArray | Yes | dizi | Sıralanacak dizi. |
lambda ifadesi | Yes | ifade | Sıralama için iki dizi öğesini karşılaştırmak için kullanılan lambda ifadesi. True ise, ikinci öğe çıkış dizisindeki ilk öğeden sonra sıralanır. |
Dönüş değeri
Bir dizi.
Örnek
Aşağıdaki örnekte işlevin nasıl kullanılacağı gösterilmektedir 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)
Önceki örnekten elde edilen çıkış, köpek nesnelerini en gençten en eskiye sıralar:
Adı | Tür | Değer |
---|---|---|
dogsByAge | Dizi | [{"name":"Indy","age":2,"interests":["Butter"]},{"name":"Casper","age":3,"interests":["Diğer köpekler"]},{"ad ":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
Toobject
toObject(inputArray, lambda expression, [lambda expression])
Bir diziyi, özel anahtar işlevi ve isteğe bağlı özel değer işlevi olan bir nesneye dönüştürür. Bir nesneyi diziye dönüştürme hakkındaki öğelere bakın.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
inputArray | Yes | dizi | Nesne oluşturmak için kullanılan dizi. |
lambda ifadesi | Yes | ifade | Anahtar koşulunu sağlamak için kullanılan lambda ifadesi. |
lambda ifadesi | Hayır | ifade | Değer koşulunu sağlamak için kullanılan lambda ifadesi. |
Dönüş değeri
Bir nesnesi.
Örnek
Aşağıdaki örnekte işlevin toObject
gerekli iki parametreyle nasıl kullanılacağı gösterilmektedir:
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)
Yukarıdaki örnek, bir diziyi temel alan bir nesne oluşturur.
Adı | Tür | Değer |
---|---|---|
dogsObject | Object | {"Evie":{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},"Casper":{"name":"Casper","age":3,"interests":["Diğer köpekler"]},"Indy":{"name":"Indy","age":2,"interests":["Butter"]},"Kira":{"name":"Kira","age":8,"interests":["Rubs"]}} |
Üçüncü parametreye sahip aşağıdaki toObject
işlev aynı çıkışı sağlar.
output dogsObject object = toObject(dogs, entry => entry.name, entry => entry)
Aşağıdaki örnekte işlevin toObject
üç parametreyle nasıl kullanılacağı gösterilmektedir.
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)
Yukarıdaki örnek, bir diziyi temel alan bir nesne oluşturur.
Adı | Tür | Değer |
---|---|---|
dogsObject | Object | {"Evie":{"age":5,"interests":["Ball","Frisbee"]},"Casper":{"age":3,"interests":["Diğer köpekler"]},"Indy":{"age":2,"interests":["Butter"},"Kira":{"age":8,"interests":["Rubs"]}} |
Sonraki adımlar
- Diziyle ilgili ek Bicep işlevleri için bkz . Bicep işlevleri - diziler .