Lambda-függvények a Bicep-hez
Ez a cikk a Bicepben használandó lambdafüggvényeket ismerteti. A Lambda-kifejezések (vagy lambdafüggvények) lényegében olyan kódblokkok, amelyek argumentumként átadhatók. Több paramétert is tartalmazhatnak, de egyetlen kódsorra korlátozódnak. A Bicep-ben a lambda kifejezés a következő formátumban van:
<lambda variable> => <expression>
Feljegyzés
A lambda függvények csak a Bicep CLI 0.10.X-es vagy újabb verziójában támogatottak.
Korlátozások
A Bicep lambda függvényre az alábbi korlátozások vonatkoznak:
- A Lambda kifejezés közvetlenül csak függvényargumentumként adható meg ezekben a függvényekben:
filter()
, ,groupBy()
,map()
mapValues()
,reduce()
,sort()
éstoObject()
. - A lambda változók (a lambda kifejezésekben használt ideiglenes változók) erőforrás- vagy modultömb-hozzáférésen belüli használata jelenleg nem támogatott.
- A lambda változók függvényen belüli
listKeys
használata jelenleg nem támogatott. - A lambda változók referenciafüggvényen belüli használata jelenleg nem támogatott.
szűrő
filter(inputArray, lambda expression)
Tömb szűrése egyéni szűrési függvénnyel.
Névtér: sys.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
inputArray | Igen | array | A szűrni kívánt tömb. |
lambda kifejezés | Igen | Kifejezés | A lambda kifejezést minden bemeneti tömbelemre alkalmazza a rendszer. Ha az eredmény igaz, az elem szerepel a kimeneti tömbben; ellenkező esetben a rendszer elveti az elemet. |
Visszaadott érték
Egy tömb.
Példák
Az alábbi példák a függvény használatát filter
mutatják be.
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')
Az előző példa kimenetei:
Név | Típus | Érték |
---|---|---|
oldDogs | Tömb | [{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
dogNameIndex | Tömb | [{"name":"Casper","age":3,"interests":["Other dogs"]}] |
az oldDogs listázza az öt vagy annál idősebb kutyákat; dogNameIndex azonosítja azokat a kutyákat, akiknek az indexszáma kisebb, mint két, és akiknek a neve "C" betűvel kezdődik.
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)
Az előző példa kimenetei:
Név | Típus | Érték |
---|---|---|
filteredLoop | Tömb | [6, 7, 8, 9] |
isEven | Tömb | [0, 2, 4, 6, 8] |
a filterdLoop az 5-nél nagyobb tömbben lévő számokat jeleníti meg, az isEven pedig a tömb páros számát.
groupBy
groupBy(inputArray, lambda expression)
Egy tömbből származó tömbértékeket tartalmazó objektumot hoz létre csoportosítási feltétel használatával.
Névtér: sys.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
inputArray | Igen | array | A csoportosítás tömbje. |
lambda kifejezés | Igen | Kifejezés | A lambda kifejezést minden bemeneti tömbelemre alkalmazza a rendszer, és csoportosítja az elemeket a csoportosítási feltétel használatával. |
Visszaadott érték
Egy objektum.
Példák
Az alábbi példa a függvény használatát groupBy
mutatja be.
var inputArray = ['foo', 'bar', 'baz']
output outObject object = groupBy(inputArray, x => substring(x, 0, 1))
Az előző példa kimenete:
Név | Típus | Érték |
---|---|---|
outObject | Objektum | {"f":["foo"],"b":["bar";"baz"]} |
az outObject egy objektumot jelenít meg, amely első betűi alapján csoportosítja a tömbelemeket.
térkép
map(inputArray, lambda expression)
Egyéni leképezési függvényt alkalmaz egy tömb minden elemére.
Névtér: sys.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
inputArray | Igen | array | A megfeleltetendő tömb. |
lambda kifejezés | Igen | Kifejezés | Az egyes bemeneti tömbelemekre alkalmazott lambda kifejezés a kimeneti tömb létrehozásához. |
Visszaadott érték
Egy tömb.
Példa
Az alábbi példa a függvény használatát map
mutatja be.
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})
Az előző példában szereplő kimenetek a következők:
Név | Típus | Érték |
---|---|---|
dogNames | Tömb | ["Evie","Casper","Indy","Kira"] |
sayHi | Tömb | ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"] |
mapArray | Tömb | [{"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 | Tömb | [{"index":0,"val":"Evie"},{"index":1,"val":"Casper"},{"index":2,"val":"Indy"},{"index":3,"val":"Kira"}] |
a dogNames az objektumok tömbjének kutyaneveit jeleníti meg; sayHi concatenates "Hello" és minden kutya neve; a mapArray és a mapArrayIndex egy másik két objektumtömböt hoz létre.
mapValues
mapValues(inputObject, lambda expression)
Objektumot hoz létre egy bemeneti objektumból egy lambda kifejezéssel az értékek leképezéséhez.
Névtér: sys.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
inputObject | Igen | object | A leképzendő objektum. |
lambda kifejezés | Igen | Kifejezés | Az értékek leképezéséhez használt lambda kifejezés. |
Visszaadott érték
Egy objektum.
Példa
Az alábbi példa a függvény használatát mapValues
mutatja be.
var inputObject = { foo: 'foo', bar: 'bar' }
output mapObject object = mapValues(inputObject, val => toUpper(val))
Az előző példa kimenete a következő:
Név | Típus | Érték |
---|---|---|
mapObject | Objektum | {foo: 'FOO', bar: 'BAR'} |
a mapObject egy másik objektumot hoz létre a nagybetűs értékekkel.
Csökkenti
reduce(inputArray, initialValue, lambda expression)
Egyéni csökkentési függvénnyel rendelkező tömbök csökkentése.
Névtér: sys.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
inputArray | Igen | array | A csökkenteni kívánt tömb. |
initialValue | Igen | bármelyik | Kezdeti érték. |
lambda kifejezés | Igen | Kifejezés | Az aktuális és a következő érték összesítéséhez használt lambda kifejezés. |
Visszaadott érték
Bármelyiket.
Példa
Az alábbi példák a függvény használatát reduce
mutatják be.
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)
Az előző példában szereplő kimenetek a következők:
Név | Típus | Érték |
---|---|---|
totalAge | egész | 18 |
totalAgeAdd1 | egész | 19 |
oddAge | egész | 7 |
totalAge összegzi a kutyák életkorát; A totalAgeAdd1 kezdeti értéke 1, és hozzáadja az összes kutya életkorát a kezdeti értékekhez. OddAge összegzi az életkor a kutyák, amelyek találhatók még indexek, különösen 5 (Evie) és 2 (Indy).
output reduceObjectUnion object = reduce([
{ foo: 123 }
{ bar: 456 }
{ baz: 789 }
], {}, (cur, next) => union(cur, next))
Az előző példa kimenete a következő:
Név | Típus | Érték |
---|---|---|
reduceObjectUnion | object | {"foo":123,"bar":456,"baz":789} |
Az egyesítő függvény egyetlen objektumot ad vissza a paraméterek összes elemével együtt. A függvényhívás az objektumok kulcsértékpárjait egy új objektumba egyesíti.
Rendezés
sort(inputArray, lambda expression)
Tömb rendezése egyéni rendezési függvénnyel.
Névtér: sys.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
inputArray | Igen | array | A rendezendő tömb. |
lambda kifejezés | Igen | Kifejezés | A lambda kifejezés két tömbelem összehasonlítására szolgál a rendezéshez. Ha igaz, a második elem a kimeneti tömb első eleme után lesz rendezve. |
Visszaadott érték
Egy tömb.
Példa
Az alábbi példa a függvény használatát sort
mutatja be.
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)
Az előző példa kimenete a kutyaobjektumokat a legfiatalabbtól a legrégebbiig rendezi:
Név | Típus | Érték |
---|---|---|
dogsByAge | Tömb | [{"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])
Átalakít egy tömböt egy egyéni kulcsfüggvényt és opcionális egyéni értékfüggvényt tartalmazó objektummá. Az objektumok tömbté alakításáról szóló elemek megtekintése.
Névtér: sys.
Paraméterek
Paraméter | Kötelező | Típus | Leírás |
---|---|---|---|
inputArray | Igen | array | Az objektum létrehozásához használt tömb. |
lambda kifejezés | Igen | Kifejezés | A kulcs predikátumának megadásához használt lambda kifejezés. |
lambda kifejezés | Nem | Kifejezés | Az érték predikátumának megadásához használt lambda kifejezés. |
Visszaadott érték
Egy objektum.
Példa
Az alábbi példa bemutatja, hogyan használhatja a függvényt toObject
a két szükséges paraméterrel:
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)
Az előző példa egy tömbön alapuló objektumot hoz létre.
Név | Típus | Érték |
---|---|---|
dogsObject | Objektum | {"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"]}} |
A következő toObject
függvény a harmadik paraméterrel ugyanazt a kimenetet biztosítja.
output dogsObject object = toObject(dogs, entry => entry.name, entry => entry)
Az alábbi példa bemutatja, hogyan használható a toObject
függvény három paraméterrel.
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)
Az előző példa egy tömbön alapuló objektumot hoz létre.
Név | Típus | Érték |
---|---|---|
dogsObject | Objektum | {"Evie":{"age":5,"interests":["Ball","Frisbee"]},"Casper":{"age":3,"interests":["Other dogs"]},"Indy":{"age":2,"interests":["Butter"]},"Kira":{"age":8,"interests":["Rubs"]}} |
Következő lépések
- További tömbhöz kapcsolódó Bicep-függvényeket a Bicep-függvények – tömbök című témakörben talál.