Fonctions lambda pour Bicep
Cet article décrit les fonctions lambda à utiliser dans Bicep. Les expressions lambda (ou fonctions lambda) sont des blocs de code qui peuvent être passés en tant qu’argument. Elles peuvent prendre plusieurs paramètres, mais sont limitées à une seule ligne de code. Dans Bicep, une expression lambda est au format suivant :
<lambda variable> => <expression>
Remarque
Les fonctions lambda ne sont prises en charge que dans la version 0.10.X ou supérieure de Bicep CLI.
Limites
La fonction lambda Bicep présente les limitations suivantes :
- Une expression lambda peut uniquement être spécifiée directement en tant qu’arguments de fonction dans les fonctions suivantes :
filter()
,map()
,reduce()
,sort()
ettoObject()
. - L’utilisation de variables lambda (variables temporaires utilisées dans les expressions lambda) à l’intérieur de l’accès au tableau de ressources ou de modules n’est pas prise en charge.
- L’utilisation de variables lambda à l’intérieur de la fonction
listKeys
n’est pas prise en charge. - L’utilisation de variables lambda à l’intérieur de la fonction reference n’est pas prise en charge.
filter
filter(inputArray, lambda expression)
Filtre un tableau avec une fonction de filtrage personnalisée.
Espace de noms : sys.
Paramètres
Paramètre | Obligatoire | Type | Description |
---|---|---|---|
inputArray | Oui | tableau | Tableau à filtrer. |
expression lambda | Oui | expression | L’expression lambda est appliquée à chaque élément d’un tableau d’entrée. Si le résultat est positif, l'élément sera inclus dans le tableau de sortie ; dans le cas contraire, l'élément sera supprimé. |
Valeur retournée
Tableau.
Exemples
Les exemples suivants montrent comment utiliser la fonction filter
.
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)
La sortie de l’exemple précédent montre les chiens qui ont cinq ans ou plus :
Nom | Type | Valeur |
---|---|---|
oldDogs | Array | [{"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)
La sortie de l’exemple précédent :
Nom | Type | Valeur |
---|---|---|
filteredLoop | Array | [6, 7, 8, 9] |
isEven | Array | [0, 2, 4, 6, 8] |
filterdLoop affiche les nombres d’un tableau qui sont supérieurs à 5, et isEven affiche les nombres pairs du tableau.
carte
map(inputArray, lambda expression)
Applique une fonction de mappage personnalisée à chaque élément d’un tableau.
Espace de noms : sys.
Paramètres
Paramètre | Obligatoire | Type | Description |
---|---|---|---|
inputArray | Oui | tableau | Tableau à mapper. |
expression lambda | Oui | expression | Expression lambda appliquée à chaque élément d’un tableau d’entrée, afin de générer le tableau de sortie. |
Valeur retournée
Tableau.
Exemple
L’exemple suivant explique comment utiliser la fonction 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}!'
})
La sortie de l’exemple précédent est :
Nom | Type | Valeur |
---|---|---|
dogNames | Array | ["Evie","Casper","Indy","Kira"] |
sayHi | Array | ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"] |
mapObject | Array | [{"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 affiche les noms de chiens du tableau d’objets. sayHi concatène « Hello » et chacun des noms de chiens. mapObject crée un autre tableau d’objets.
reduce
reduce(inputArray, initialValue, lambda expression)
Réduit un tableau à l’aide d’une fonction de réduction personnalisée.
Espace de noms : sys.
Paramètres
Paramètre | Obligatoire | Type | Description |
---|---|---|---|
inputArray | Oui | tableau | Tableau à réduire. |
initialValue | Oui | n'importe laquelle | Valeur initiale. |
expression lambda | Oui | expression | Expression lambda utilisée pour agréger la valeur actuelle et la valeur suivante. |
Valeur retournée
Tout.
Exemple
Les exemples suivants montrent comment utiliser la fonction 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)
La sortie de l’exemple précédent est :
Nom | Type | Valeur |
---|---|---|
totalAge | int | 18 |
totalAgeAdd1 | int | 19 |
totalAge additionne l’âge des chiens. totalAgeAdd1 a une valeur initiale de 1, et ajoute tous les âges des chiens aux valeurs initiales.
output reduceObjectUnion object = reduce([
{ foo: 123 }
{ bar: 456 }
{ baz: 789 }
], {}, (cur, next) => union(cur, next))
La sortie de l’exemple précédent est :
Nom | Type | Valeur |
---|---|---|
reduceObjectUnion | object | {"foo":123,"bar":456,"baz":789} |
La fonction union retourne un objet unique avec tous les éléments à partir des paramètres. L’appel de fonction associe les paires clé-valeur des objets dans un nouvel objet.
sort
sort(inputArray, lambda expression)
Trie un tableau avec une fonction de tri personnalisée.
Espace de noms : sys.
Paramètres
Paramètre | Obligatoire | Type | Description |
---|---|---|---|
inputArray | Oui | tableau | Tableau à trier. |
expression lambda | Oui | expression | Expression lambda utilisée pour comparer deux éléments de tableau à des fins de classement. Si la valeur est true, le deuxième élément sera placé après le premier dans le tableau de sortie. |
Valeur retournée
Tableau.
Exemple
L’exemple suivant explique comment utiliser la fonction 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)
La sortie de l’exemple précédent trie les objets chiens du plus jeune au plus âgé :
Nom | Type | Valeur |
---|---|---|
dogsByAge | Array | [{"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])
Convertit un tableau en objet avec une fonction de clé personnalisée et une fonction de valeur personnalisée facultative. Consultez les éléments relatifs à la conversion d’un objet en tableau.
Espace de noms : sys.
Paramètres
Paramètre | Obligatoire | Type | Description |
---|---|---|---|
inputArray | Oui | tableau | Tableau utilisé pour créer un objet. |
expression lambda | Oui | expression | Expression lambda utilisée pour fournir le prédicat de clé. |
expression lambda | Non | expression | Expression lambda utilisée pour fournir la valeur de clé. |
Valeur retournée
Objet.
Exemple
L’exemple suivant montre comment utiliser la fonction toObject
avec les deux paramètres requis :
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’exemple précédent génère un objet basé sur un tableau.
Nom | Type | Valeur |
---|---|---|
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 fonction toObject
suivante, avec le troisième paramètre, fournit le même résultat.
output dogsObject object = toObject(dogs, entry => entry.name, entry => entry)
L’exemple suivant montre comment utiliser la fonction toObject
avec trois paramètres.
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’exemple précédent génère un objet basé sur un tableau.
Nom | Type | Valeur |
---|---|---|
dogsObject | Object | {"Evie":{"age":5,"interests":["Ball","Frisbee"]},"Casper" :{"age":3,"interests":["Other dogs"]},"Indy" :{"age":2,"interests":["Butter"]},"Kira" :{"age":8,"interests" :["Rubs"]}} |
Étapes suivantes
- Pour découvrir d’autres fonctions Bicep associées aux tableaux, consultez Fonctions Bicep : tableaux.