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


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()és toObject().
  • 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