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 csak közvetlenül adható meg függvényargumentumként ezekben a függvényekben: filter(), map(), 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 Szükséges 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 szerepelni fog 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: 'Kira'
    age: 8
    interests: ['Rubs']
  }
]

output oldDogs array = filter(dogs, dog => dog.age >=5)

Az előző példa kimenete az öt vagy annál idősebb kutyákat mutatja be:

Név Típus Érték
oldDogs Tömb [{"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)

Az előző példa kimenete:

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.

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 Szükséges 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 mapObject array = map(range(0, length(dogs)), i => {
  i: i
  dog: dogs[i].name
  greeting: 'Ahoy, ${dogs[i].name}!'
})

Az előző példa kimenete a következő:

Név Típus Érték
dogNames Tömb ["Evie","Casper","Indy","Kira"]
sayHi Tömb ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"]
mapObject 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!"}]

a dogNames az objektumok tömbjének kutyaneveit jeleníti meg; sayHi összefűzi a "Hello" és az egyes kutyanevek; és a mapObject létrehoz egy másik tömb objektumok.

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 Szükséges 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)

Az előző példa kimenete a következő:

Név Típus Érték
totalAge egész 18
totalAgeAdd1 egész 19

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.

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 Szükséges 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 Szükséges 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