Funkce lambda pro Bicep
Tento článek popisuje funkce lambda, které se mají použít v Bicep. Výrazy lambda (nebo funkce lambda) jsou v podstatě bloky kódu, které lze předat jako argument. Můžou mít více parametrů, ale jsou omezeny na jeden řádek kódu. Výraz lambda v bicep je v tomto formátu:
<lambda variable> => <expression>
Poznámka:
Funkce lambda jsou podporované pouze v rozhraní příkazového řádku Bicep verze 0.10.X nebo vyšší.
Omezení
Funkce lambda bicep má tato omezení:
- Výraz lambda lze zadat pouze přímo jako argumenty funkce v těchto funkcích:
filter()
,groupBy()
, ,mapValues()
map()
,reduce()
, ,sort()
atoObject()
. - Použití proměnných lambda (dočasných proměnných používaných ve výrazech lambda) uvnitř přístupu k prostředkům nebo polím modulů se v současné době nepodporuje.
- Použití proměnných lambda uvnitř
listKeys
funkce se v současné době nepodporuje. - Použití proměnných lambda uvnitř referenční funkce se v současné době nepodporuje.
filter
filter(inputArray, lambda expression)
Filtruje pole pomocí vlastní funkce filtrování.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
inputArray | Ano | pole | Pole, které chcete filtrovat. |
výraz lambda | Ano | výraz | Výraz lambda se použije u každého vstupního prvku pole. Pokud je výsledek pravdivý, položka je zahrnuta do výstupního pole; jinak se položka zahodí. |
Vrácená hodnota
Pole.
Příklady
Následující příklady ukazují, jak funkci používat 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')
Výstupy z předchozího příkladu:
Name | Typ | Hodnota |
---|---|---|
staréDogs | Pole | [{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
dogNameIndex | Pole | [{"name":"Casper","age":3,"interests":["Ostatní psi"]}] |
starýDogs uvádí psy, které jsou pět nebo starší; dogNameIndex identifikuje psy, jejichž číslo indexu je menší než dvě, a jehož název začíná písmenem "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)
Výstupy z předchozího příkladu:
Name | Typ | Hodnota |
---|---|---|
filteredLoop | Pole | [6, 7, 8, 9] |
isEven | Pole | [0, 2, 4, 6, 8] |
FilterdLoop zobrazuje čísla v matici větší než 5. Funkce isEven zobrazuje sudá čísla v matici.
Groupby
groupBy(inputArray, lambda expression)
Vytvoří objekt s maticovými hodnotami z pole pomocí podmínky seskupení.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
inputArray | Ano | pole | Pole pro seskupení. |
výraz lambda | Ano | výraz | Výraz lambda se použije pro každý vstupní prvek pole a seskupí prvky pomocí podmínky seskupení. |
Vrácená hodnota
Objekt.
Příklady
Následující příklad ukazuje, jak používat groupBy
funkci.
var inputArray = ['foo', 'bar', 'baz']
output outObject object = groupBy(inputArray, x => substring(x, 0, 1))
Výstup z předchozího příkladu:
Name | Typ | Hodnota |
---|---|---|
outObject | Object | {"f":["foo"],"b":["bar","baz"]} |
OutObject zobrazuje objekt, který seskupuje prvky pole podle jejich prvních písmen.
map
map(inputArray, lambda expression)
Použije vlastní funkci mapování na každý prvek pole.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
inputArray | Ano | pole | Pole, které se má mapovat. |
výraz lambda | Ano | výraz | Výraz lambda použitý pro každý vstupní prvek pole, aby se vygenerovalo výstupní pole. |
Vrácená hodnota
Pole.
Příklad
Následující příklad ukazuje, jak používat map
funkci.
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})
Výstupy z předchozího příkladu jsou:
Name | Typ | Hodnota |
---|---|---|
dogNames | Pole | ["Evie","Casper","Indy","Kira"] |
sayHi | Pole | ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"] |
mapArray | Pole | [{"i":0,"pes":"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 | Pole | [{"index":0,"val":"Evie"},{"index":1,"val":"Casper"},{"index":2,"val":"Indy"},{"index":3,"val":"Kira"}] |
dogNames zobrazuje názvy psů z pole objektů; sayHi zřetězí slovo "Hello" a každé jméno psa; mapArray a mapArrayIndex vytvoří další dvě pole objektů.
mapValues
mapValues(inputObject, lambda expression)
Vytvoří objekt ze vstupního objektu pomocí výrazu lambda k mapování hodnot.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
inputObject | Ano | objekt | Objekt, který se má mapovat. |
výraz lambda | Ano | výraz | Výraz lambda použitý k mapování hodnot. |
Vrácená hodnota
Objekt.
Příklad
Následující příklad ukazuje, jak používat mapValues
funkci.
var inputObject = { foo: 'foo', bar: 'bar' }
output mapObject object = mapValues(inputObject, val => toUpper(val))
Výstup z předchozího příkladu je:
Name | Typ | Hodnota |
---|---|---|
mapObject | Object | {foo: 'FOO', bar: 'BAR'} |
mapObject vytvoří další objekt s hodnotami velkými písmeny.
Snížit
reduce(inputArray, initialValue, lambda expression)
Zmenšuje pole pomocí vlastní funkce redukce.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
inputArray | Ano | pole | Pole, které chcete snížit. |
Initialvalue | Ano | jakékoliv | Počáteční hodnota. |
výraz lambda | Ano | výraz | Výraz lambda použitý k agregaci aktuální hodnoty a další hodnoty. |
Vrácená hodnota
Cokoliv.
Příklad
Následující příklady ukazují, jak funkci používat 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)
Výstupy z předchozího příkladu jsou:
Name | Typ | Hodnota |
---|---|---|
totalAge | int | 18 |
totalAgeAdd1 | int | 19 |
lichá | int | 7 |
totalAge sečte věk psů; totalAgeAdd1 má počáteční hodnotu 1 a sečte všechny věky psů k počátečním hodnotám. Lichá hodnota sečte věk psů, které se nacházejí na sudých indexech, konkrétně 5 (Evie) a 2 (Indy).
output reduceObjectUnion object = reduce([
{ foo: 123 }
{ bar: 456 }
{ baz: 789 }
], {}, (cur, next) => union(cur, next))
Výstup z předchozího příkladu je:
Name | Typ | Hodnota |
---|---|---|
reduceObjectUnion | objekt | {"foo":123,"bar":456,"baz":789} |
Funkce sjednocení vrátí jeden objekt se všemi prvky z parametrů. Volání funkce sjednocuje páry klíč-hodnota objektů do nového objektu.
sort
sort(inputArray, lambda expression)
Seřadí pole pomocí vlastní funkce řazení.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
inputArray | Ano | pole | Pole, které chcete seřadit. |
výraz lambda | Ano | výraz | Výraz lambda použitý k porovnání dvou prvků pole pro řazení. Pokud je pravda, druhý prvek bude seřazen za prvním ve výstupním poli. |
Vrácená hodnota
Pole.
Příklad
Následující příklad ukazuje, jak používat sort
funkci.
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)
Výstup z předchozího příkladu seřadí objekty psa od nejstaršího po nejstarší:
Name | Typ | Hodnota |
---|---|---|
psiByAge | Pole | [{"name":"Indy","age":2,"interests":["Butter"]},{"name":"Casper","age":3,"interests":["Ostatní psi"]},{"name ":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
Toobject
toObject(inputArray, lambda expression, [lambda expression])
Převede pole na objekt s vlastní funkcí klíče a volitelnou vlastní hodnotou. Podívejte se na položky o převodu objektu na pole.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
inputArray | Ano | pole | Pole použité k vytvoření objektu. |
výraz lambda | Ano | výraz | Výraz lambda použitý k zadání predikátu klíče. |
výraz lambda | No | výraz | Výraz lambda použitý k zadání predikátu hodnoty. |
Vrácená hodnota
Objekt.
Příklad
Následující příklad ukazuje, jak používat toObject
funkci se dvěma požadovanými parametry:
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)
Předchozí příklad vygeneruje objekt založený na poli.
Name | Typ | Hodnota |
---|---|---|
dogsObject | Object | {"Evie":{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},"Casper":{"name":"Casper","age":3,"interests":["Ostatní psi"]},"Indy":{"name":"Indy","age":2,"interests":["Butter"]},"Kira":{"name":"Kira","age":8,"interests":["Rubs"]}} |
Následující toObject
funkce s třetím parametrem poskytuje stejný výstup.
output dogsObject object = toObject(dogs, entry => entry.name, entry => entry)
Následující příklad ukazuje, jak používat toObject
funkci se třemi parametry.
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)
Předchozí příklad vygeneruje objekt založený na poli.
Name | Typ | Hodnota |
---|---|---|
dogsObject | Object | {"Evie":{"age":5,"interests":["Ball","Frisbee"]},"Casper":{"age":3,"interests":["Ostatní psi"]},"Indy":{"age":2,"interests":["Butter"]},"Kira":{"age":8,"interests":["Rubs"]}} |
Další kroky
- Viz funkce Bicep – pole pro další funkce Bicep související s poli.