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() et toObject().
  • 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