Funkcje lambda dla Bicep
W tym artykule opisano funkcje lambda do użycia w Bicep. Wyrażenia lambda (lub funkcje lambda) są zasadniczo blokami kodu, które mogą być przekazywane jako argument. Mogą przyjmować wiele parametrów, ale są ograniczone do jednego wiersza kodu. W wyrażeniu lambda w języku Bicep ma następujący format:
<lambda variable> => <expression>
Uwaga
Funkcje lambda są obsługiwane tylko w interfejsie wiersza polecenia Bicep w wersji 0.10.X lub nowszej.
Ograniczenia
Funkcja lambda Bicep ma następujące ograniczenia:
- Wyrażenie lambda można określić tylko bezpośrednio jako argumenty funkcji w tych funkcjach:
filter()
, , ,mapValues()
groupBy()
reduce()
map()
,sort()
, i .toObject()
- Używanie zmiennych lambda (zmiennych tymczasowych używanych w wyrażeniach lambda) w dostępie do zasobów lub tablicy modułów nie jest obecnie obsługiwane.
- Używanie zmiennych lambda wewnątrz
listKeys
funkcji nie jest obecnie obsługiwane. - Używanie zmiennych lambda wewnątrz funkcji referencyjnej nie jest obecnie obsługiwane.
filtr
filter(inputArray, lambda expression)
Filtruje tablicę za pomocą niestandardowej funkcji filtrowania.
Przestrzeń nazw: sys.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
inputArray | Tak | tablica | Tablica do filtrowania. |
wyrażenie lambda | Tak | wyrażenie | Wyrażenie lambda jest stosowane do każdego elementu tablicy wejściowej. Jeśli wynik ma wartość true, element jest uwzględniony w tablicy wyjściowej; w przeciwnym razie element zostanie odrzucony. |
Wartość zwracana
Tablicy.
Przykłady
W poniższych przykładach pokazano, jak używać filter
funkcji.
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')
Dane wyjściowe z poprzedniego przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
oldDogs | Tablica | [{"name":"Evie","age":5,"interests"::"Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
dogNameIndex | Tablica | [{"name":"Casper","age":3,"interests":["Other dogs"]}] |
oldDogs wymienia psy, które są pięć lub starsze; dogNameIndex identyfikuje psy, których numer indeksu jest mniejszy niż dwa i którego nazwa zaczyna się literą "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)
Dane wyjściowe z poprzedniego przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
filteredLoop | Tablica | [6, 7, 8, 9] |
Iseven | Tablica | [0, 2, 4, 6, 8] |
filterdLoop pokazuje liczby w tablicy, które są większe niż 5; i isEven pokazuje liczby parzystych w tablicy.
Groupby
groupBy(inputArray, lambda expression)
Tworzy obiekt z wartościami tablicy z tablicy przy użyciu warunku grupowania.
Przestrzeń nazw: sys.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
inputArray | Tak | tablica | Tablica do grupowania. |
wyrażenie lambda | Tak | wyrażenie | Wyrażenie lambda jest stosowane do każdego elementu tablicy wejściowej i grupuje elementy przy użyciu warunku grupowania. |
Wartość zwracana
Obiekt .
Przykłady
W poniższym przykładzie pokazano, jak używać groupBy
funkcji.
var inputArray = ['foo', 'bar', 'baz']
output outObject object = groupBy(inputArray, x => substring(x, 0, 1))
Dane wyjściowe z poprzedniego przykładu:
Nazwisko | Typ | Wartość |
---|---|---|
outObject | Objekt | {"f":["foo"],"b":["bar","baz"]} |
obiekt outObject przedstawia obiekt, który grupuje elementy tablicy według pierwszych liter.
map
map(inputArray, lambda expression)
Stosuje funkcję mapowania niestandardowego do każdego elementu tablicy.
Przestrzeń nazw: sys.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
inputArray | Tak | tablica | Tablica do mapowania. |
wyrażenie lambda | Tak | wyrażenie | Wyrażenie lambda zastosowane do każdego elementu tablicy wejściowej w celu wygenerowania tablicy wyjściowej. |
Wartość zwracana
Tablicy.
Przykład
W poniższym przykładzie pokazano, jak używać map
funkcji.
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})
Dane wyjściowe z poprzedniego przykładu to:
Nazwisko | Typ | Wartość |
---|---|---|
dogNames | Tablica | ["Evie","Casper","Indy","Kira"] |
sayHi | Tablica | ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"] |
mapArray | Tablica | [{"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 | Tablica | [{"index":0,"val":"Evie"},{"index":1,"val":"Casper"},{"index":2,"val":"Indy"},{"index":3,"val":"Kira"}] |
dogNames pokazuje nazwy psów z tablicy obiektów; sayHi łączy "Hello" i każde z imion psów; mapArray i mapArrayIndex tworzą kolejne dwie tablice obiektów.
mapValues
mapValues(inputObject, lambda expression)
Tworzy obiekt z obiektu wejściowego przy użyciu wyrażenia lambda do mapowania wartości.
Przestrzeń nazw: sys.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
inputObject | Tak | obiekt | Obiekt do mapowania. |
wyrażenie lambda | Tak | wyrażenie | Wyrażenie lambda używane do mapowania wartości. |
Wartość zwracana
Obiekt .
Przykład
W poniższym przykładzie pokazano, jak używać mapValues
funkcji.
var inputObject = { foo: 'foo', bar: 'bar' }
output mapObject object = mapValues(inputObject, val => toUpper(val))
Dane wyjściowe z poprzedniego przykładu to:
Nazwisko | Typ | Wartość |
---|---|---|
mapObject | Objekt | {foo: 'FOO', bar: 'BAR'} |
obiekt mapObject tworzy inny obiekt z wartościami w wielkim przypadku.
Zmniejszyć
reduce(inputArray, initialValue, lambda expression)
Zmniejsza tablicę za pomocą niestandardowej funkcji redukcji.
Przestrzeń nazw: sys.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
inputArray | Tak | tablica | Tablica do zmniejszenia. |
initialValue | Tak | dowolny | Wartość początkowa. |
wyrażenie lambda | Tak | wyrażenie | Wyrażenie lambda używane do agregowania bieżącej wartości i następnej wartości. |
Wartość zwracana
Wszelki.
Przykład
W poniższych przykładach pokazano, jak używać reduce
funkcji.
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)
Dane wyjściowe z poprzedniego przykładu to:
Nazwisko | Typ | Wartość |
---|---|---|
totalAge | int | 18 |
totalAgeAdd1 | int | 19 |
oddAge | int | 7 |
totalAge sumuje wiek psów; totalAgeAdd1 ma początkową wartość 1 i dodaje wszystkie grupy wiekowe psów do początkowych wartości. oddAge sumuje wiek psów, które znajdują się w indeksach parzysłych, w szczególności 5 (Evie) i 2 (Indy).
output reduceObjectUnion object = reduce([
{ foo: 123 }
{ bar: 456 }
{ baz: 789 }
], {}, (cur, next) => union(cur, next))
Dane wyjściowe z poprzedniego przykładu to:
Nazwisko | Typ | Wartość |
---|---|---|
reduceObjectUnion | obiekt | {"foo":123,"bar":456,"baz":789} |
Funkcja union zwraca pojedynczy obiekt ze wszystkimi elementami z parametrów. Wywołanie funkcji łączy pary wartości klucza obiektów w nowy obiekt.
sort
sort(inputArray, lambda expression)
Sortuje tablicę za pomocą niestandardowej funkcji sortowania.
Przestrzeń nazw: sys.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
inputArray | Tak | tablica | Tablica do sortowania. |
wyrażenie lambda | Tak | wyrażenie | Wyrażenie lambda używane do porównywania dwóch elementów tablicy do porządkowania. Jeśli wartość true, drugi element zostanie uporządkowany po pierwszym w tablicy wyjściowej. |
Wartość zwracana
Tablicy.
Przykład
W poniższym przykładzie pokazano, jak używać sort
funkcji.
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)
Dane wyjściowe z poprzedniego przykładu sortuje obiekty psów od najmłodszych do najstarszych:
Nazwisko | Typ | Wartość |
---|---|---|
dogsByAge | Tablica | [{"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])
Konwertuje tablicę na obiekt z funkcją klucza niestandardowego i opcjonalną funkcją wartości niestandardowej. Zobacz elementy dotyczące konwertowania obiektu na tablicę.
Przestrzeń nazw: sys.
Parametry
Parametr | Wymagania | Type | Opis |
---|---|---|---|
inputArray | Tak | tablica | Tablica używana do tworzenia obiektu. |
wyrażenie lambda | Tak | wyrażenie | Wyrażenie lambda używane do podawania predykatu klucza. |
wyrażenie lambda | Nie. | wyrażenie | Wyrażenie lambda używane do podawania predykatu wartości. |
Wartość zwracana
Obiekt .
Przykład
W poniższym przykładzie pokazano, jak używać toObject
funkcji z dwoma wymaganymi parametrami:
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)
Powyższy przykład generuje obiekt na podstawie tablicy.
Nazwisko | Typ | Wartość |
---|---|---|
dogsObject | Objekt | {"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"]}} |
Poniższa toObject
funkcja z trzecim parametrem udostępnia te same dane wyjściowe.
output dogsObject object = toObject(dogs, entry => entry.name, entry => entry)
W poniższym przykładzie pokazano, jak używać toObject
funkcji z trzema parametrami.
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)
Powyższy przykład generuje obiekt na podstawie tablicy.
Nazwisko | Typ | Wartość |
---|---|---|
dogsObject | Objekt | {"Evie":{"age"::5,"interests":["Ball","Frisbee"]},"Casper":{"age":3,"interests":["Other dogs"]},"Indy":{"age":2,"interests":["Butter"]},"Kira":{"age":8,"interests":["Rubs"]}} |
Następne kroki
- Zobacz Funkcje Bicep — tablice , aby uzyskać więcej funkcji Bicep związanych z tablicą.