Funzioni lambda per Bicep
Questo articolo descrive le funzioni lambda da usare in Bicep. Le espressioni lambda (o funzioni lambda) sono essenzialmente blocchi di codice che possono essere passati come argomento. Possono accettare più parametri, ma sono limitati a una singola riga di codice. In Bicep l'espressione lambda è in questo formato:
<lambda variable> => <expression>
Nota
Le funzioni lambda sono supportate solo nell'interfaccia della riga di comando di Bicep versione 0.10.X o successiva.
Limiti
La funzione lambda Bicep presenta queste limitazioni:
- L'espressione lambda può essere specificata direttamente come argomenti di funzione in queste funzioni:
filter()
,reduce()
map()
,sort()
, etoObject()
. - L'uso di variabili lambda (le variabili temporanee usate nelle espressioni lambda) all'interno dell'accesso alle matrici di risorse o moduli non è attualmente supportato.
- L'uso di variabili lambda all'interno della
listKeys
funzione non è attualmente supportato. - L'uso di variabili lambda all'interno della funzione di riferimento non è attualmente supportato.
filter
filter(inputArray, lambda expression)
Filtra una matrice con una funzione di filtro personalizzata.
Spazio dei nomi: sys.
Parametri
Parametro | Obbligatorio | Type | Descrizione |
---|---|---|---|
inputArray | Sì | array | Matrice da filtrare. |
espressione lambda | Sì | expression | L'espressione lambda viene applicata a ogni elemento della matrice di input. Se il risultato è true, l'elemento verrà incluso nella matrice di output; in caso contrario, l'elemento viene rimosso. |
Valore restituito
Matrice .
Esempi
Negli esempi seguenti viene illustrato come usare la filter
funzione .
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)
L'output dell'esempio precedente mostra i cani che hanno cinque o versioni precedenti:
Nome | Type | Valore |
---|---|---|
oldDogs | Matrice | [{"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)
Output dell'esempio precedente:
Nome | Type | Valore |
---|---|---|
filteredLoop | Matrice | [6, 7, 8, 9] |
isEven | Matrice | [0, 2, 4, 6, 8] |
filterdLoop mostra i numeri in una matrice maggiore di 5 e isEven mostra i numeri pari nella matrice.
mappa
map(inputArray, lambda expression)
Applica una funzione di mapping personalizzata a ogni elemento di una matrice.
Spazio dei nomi: sys.
Parametri
Parametro | Obbligatorio | Type | Descrizione |
---|---|---|---|
inputArray | Sì | array | Matrice da mappare. |
espressione lambda | Sì | expression | Espressione lambda applicata a ogni elemento della matrice di input, per generare la matrice di output. |
Valore restituito
Matrice .
Esempio
L'esempio seguente illustra come usare la funzione map
.
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}!'
})
L'output dell'esempio precedente è:
Nome | Type | Valore |
---|---|---|
dogNames | Matrice | ["Evie","Casper","Indy","Kira"] |
sayHi | Matrice | ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"] |
mapObject | Matrice | [{"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!"}] |
dogNames mostra i nomi dei cani dalla matrice di oggetti; sayHi concatena "Hello" e ognuno dei nomi dei cani e mapObject crea un'altra matrice di oggetti.
reduce
reduce(inputArray, initialValue, lambda expression)
Riduce una matrice con una funzione di riduzione personalizzata.
Spazio dei nomi: sys.
Parametri
Parametro | Obbligatorio | Type | Descrizione |
---|---|---|---|
inputArray | Sì | array | Matrice da ridurre. |
initialValue | Sì | qualsiasi | Valore iniziale. |
espressione lambda | Sì | expression | Espressione lambda utilizzata per aggregare il valore corrente e il valore successivo. |
Valore restituito
Qualsiasi.
Esempio
Negli esempi seguenti viene illustrato come usare la reduce
funzione .
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)
L'output dell'esempio precedente è:
Nome | Type | Valore |
---|---|---|
totalAge | int | 18 |
totalAgeAdd1 | int | 19 |
totalAge somma le età dei cani; totalAgeAdd1 ha un valore iniziale pari a 1 e aggiunge tutte le età del cane ai valori iniziali.
output reduceObjectUnion object = reduce([
{ foo: 123 }
{ bar: 456 }
{ baz: 789 }
], {}, (cur, next) => union(cur, next))
L'output dell'esempio precedente è:
Nome | Type | Valore |
---|---|---|
reduceObjectUnion | oggetto | {"foo":123,"bar":456,"baz":789} |
La funzione union restituisce un singolo oggetto con tutti gli elementi dei parametri. La chiamata di funzione unisce le coppie chiave-valore degli oggetti in un nuovo oggetto .
ordinamento
sort(inputArray, lambda expression)
Ordina una matrice con una funzione di ordinamento personalizzata.
Spazio dei nomi: sys.
Parametri
Parametro | Obbligatorio | Type | Descrizione |
---|---|---|---|
inputArray | Sì | array | Matrice da ordinare. |
espressione lambda | Sì | expression | Espressione lambda utilizzata per confrontare due elementi della matrice per l'ordinamento. Se true, il secondo elemento verrà ordinato dopo il primo nella matrice di output. |
Valore restituito
Matrice .
Esempio
L'esempio seguente illustra come usare la funzione sort
.
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)
L'output dell'esempio precedente ordina gli oggetti dog dal più giovane al più vecchio:
Nome | Type | Valore |
---|---|---|
dogsByAge | Matrice | [{"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])
Converte una matrice in un oggetto con una funzione chiave personalizzata e una funzione valore personalizzato facoltativa. Vedere gli elementi sulla conversione di un oggetto in una matrice.
Spazio dei nomi: sys.
Parametri
Parametro | Obbligatorio | Type | Descrizione |
---|---|---|---|
inputArray | Sì | array | Matrice utilizzata per la creazione di un oggetto . |
espressione lambda | Sì | expression | Espressione lambda usata per fornire il predicato della chiave. |
espressione lambda | No | expression | Espressione lambda usata per fornire il predicato del valore. |
Valore restituito
Oggetto .
Esempio
L'esempio seguente illustra come usare la toObject
funzione con i due parametri obbligatori:
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)
L'esempio precedente genera un oggetto basato su una matrice.
Nome | Type | Valore |
---|---|---|
dogsObject | Object | {"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"]}} |
La funzione seguente toObject
con il terzo parametro fornisce lo stesso output.
output dogsObject object = toObject(dogs, entry => entry.name, entry => entry)
L'esempio seguente illustra come usare la toObject
funzione con tre parametri.
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)
L'esempio precedente genera un oggetto basato su una matrice.
Nome | Type | Valore |
---|---|---|
dogsObject | Object | {"Evie":{"age":5,"interests":["Ball","Frisbee"]},"Casper":{"age":3,"interests":["Other dogs"]},"Indy":{"age":2,"interests":["Butter"]},"Kira":{"age":8,"interests":["Rubs"]}} |
Passaggi successivi
- Per altre funzioni Bicep correlate a Bicep, vedere Funzioni Bicep - Matrici aggiuntive .