Delen via


Lambda-functies voor Bicep

In dit artikel worden de lambda-functies beschreven die in Bicep moeten worden gebruikt. Lambda-expressies (of lambda-functies) zijn in wezen blokken code die als argument kunnen worden doorgegeven. Ze kunnen meerdere parameters gebruiken, maar zijn beperkt tot één regel code. In Bicep heeft lambda-expressie deze indeling:

<lambda variable> => <expression>

Notitie

De lambda-functies worden alleen ondersteund in Bicep CLI versie 0.10.X of hoger.

Beperkingen

De functie Bicep lambda heeft deze beperkingen:

  • Lambda-expressie kan alleen rechtstreeks worden opgegeven als functieargumenten in deze functies: filter(), , groupBy()mapValues()map(), , reduce(), , , sort()en .toObject()
  • Het gebruik van lambda-variabelen (de tijdelijke variabelen die worden gebruikt in de lambda-expressies) binnen resource- of modulematrixtoegang wordt momenteel niet ondersteund.
  • Het gebruik van lambda-variabelen in de listKeys functie wordt momenteel niet ondersteund.
  • Het gebruik van lambda-variabelen in de referentiefunctie wordt momenteel niet ondersteund.

filter

filter(inputArray, lambda expression)

Hiermee filtert u een matrix met een aangepaste filterfunctie.

Naamruimte: sys.

Parameters

Parameter Vereist Type Description
inputArray Ja matrix De matrix die moet worden gefilterd.
lambda-expressie Ja Expressie De lambda-expressie wordt toegepast op elk invoermatrixelement. Als het resultaat waar is, wordt het item opgenomen in de uitvoermatrix; anders wordt het item verwijderd.

Retourwaarde

Een matrix.

Voorbeelden

In de volgende voorbeelden ziet u hoe u de filter functie gebruikt.

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')

De uitvoer uit het vorige voorbeeld:

Name Type Weergegeven als
oldDogs Matrix [{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interest":["Rubs"]}]
dogNameIndex Matrix [{"name":"Source","age":3,"interest":["Other dogs"]}]

oldDogs vermeldt de honden die vijf of ouder zijn; dogNameIndex identificeert de honden waarvan het indexnummer kleiner is dan twee en waarvan de naam begint met de letter 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)

De uitvoer uit het vorige voorbeeld:

Name Type Weergegeven als
filteredLoop Matrix [6, 7, 8, 9]
isEven Matrix [0, 2, 4, 6, 8]

filterdLoop toont de getallen in een matrix die groter is dan 5; en isEven toont de even getallen in de matrix.

groupBy

groupBy(inputArray, lambda expression)

Hiermee maakt u een object met matrixwaarden van een matrix met behulp van een groeperingsvoorwaarde.

Naamruimte: sys.

Parameters

Parameter Vereist Type Description
inputArray Ja matrix De matrix voor groepering.
lambda-expressie Ja Expressie De lambda-expressie wordt toegepast op elk invoermatrixelement en groepeert de elementen met behulp van de groeperingsvoorwaarde.

Retourwaarde

Een object.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de groupBy functie gebruikt.

var inputArray = ['foo', 'bar', 'baz']

output outObject object = groupBy(inputArray, x => substring(x, 0, 1)) 

De uitvoer uit het vorige voorbeeld:

Name Type Weergegeven als
outObject Object {"f":["foo"],"b":["bar","baz"]}

outObject toont een object waarmee de matrixelementen worden gegroepeerd op basis van de eerste letters.

map

map(inputArray, lambda expression)

Hiermee past u een aangepaste toewijzingsfunctie toe op elk element van een matrix.

Naamruimte: sys.

Parameters

Parameter Vereist Type Description
inputArray Ja matrix De matrix die moet worden toegewezen.
lambda-expressie Ja Expressie De lambda-expressie die wordt toegepast op elk element van de invoermatrix om de uitvoermatrix te genereren.

Retourwaarde

Een matrix.

Opmerking

In het volgende voorbeeld ziet u hoe u de map functie gebruikt.

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})

De uitvoer uit het vorige voorbeeld zijn:

Name Type Weergegeven als
dogNames Matrix ["Evie","Neerkom","Indy","Kira"]
sayHi Matrix ["Hallo Evie!","Hallo Neerkom!","Hallo Indy!","Hallo Kira!"]
mapArray Matrix [{"i":0,"dog":"Evie","greeting":"Ahoy, Evie!},{"i":1,"dog":"Neerkom","begroeting":"Ahoy,Source!"},{"i":2,"dog":"Indy","greeting":"Ahoy, Indy!"},{"i":3,"dog":"Kira","greeting":"Ahoy, Kira!"}]
mapArrayIndex Matrix [{"index":0,"val":"Evie"},{"index":1,"val":"Neerkom"},{"index":2,"val":"Indy"},{"index":3,"val":"Kira"}]

dogNames toont de namen van de honden uit de matrix van objecten; sayHi voegt "Hallo" en elk van de namen van de honden samen; mapArray en mapArrayIndex maken nog twee matrices van objecten.

mapValues

mapValues(inputObject, lambda expression)

Hiermee maakt u een object op basis van een invoerobject met behulp van een lambda-expressie om waarden toe te wijzen.

Naamruimte: sys.

Parameters

Parameter Vereist Type Description
inputObject Ja object Het object dat moet worden toegewezen.
lambda-expressie Ja Expressie De lambda-expressie die wordt gebruikt om de waarden toe te wijzen.

Retourwaarde

Een object.

Opmerking

In het volgende voorbeeld ziet u hoe u de mapValues functie gebruikt.

var inputObject = { foo: 'foo', bar: 'bar' }

output mapObject object = mapValues(inputObject, val => toUpper(val)) 

De uitvoer uit het voorgaande voorbeeld is:

Name Type Weergegeven als
mapObject Object {foo: 'FOO', balk: 'BAR'}

mapObject maakt een ander object met de waarden in hoofdletters.

Verminderen

reduce(inputArray, initialValue, lambda expression)

Vermindert een matrix met een aangepaste reductiefunctie.

Naamruimte: sys.

Parameters

Parameter Vereist Type Description
inputArray Ja matrix De matrix die moet worden verkleind.
initialValue Ja willekeurige Initiële waarde.
lambda-expressie Ja Expressie De lambda-expressie die wordt gebruikt om de huidige waarde en de volgende waarde samen te voegen.

Retourwaarde

Alle.

Opmerking

In de volgende voorbeelden ziet u hoe u de reduce functie gebruikt.

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)

De uitvoer uit het vorige voorbeeld zijn:

Name Type Weergegeven als
totalage int 18
totalAgeAdd1 int 19
oddAge int 7

totalAge telt de leeftijden van de honden op; totalAgeAdd1 heeft een initiële waarde van 1 en voegt alle leeftijden van de hond toe aan de initiële waarden. oddAge telt de leeftijden van honden op die zich op even indexen bevinden, met name 5 (Evie) en 2 (Indy).

output reduceObjectUnion object = reduce([
  { foo: 123 }
  { bar: 456 }
  { baz: 789 }
], {}, (cur, next) => union(cur, next))

De uitvoer uit het voorgaande voorbeeld is:

Name Type Weergegeven als
reduceObjectUnion object {"foo":123,"bar":456,"baz":789}

De samenvoegfunctie retourneert één object met alle elementen uit de parameters. Met de functie worden de sleutelwaardeparen van de objecten samengevoegd in een nieuw object.

sort

sort(inputArray, lambda expression)

Hiermee sorteert u een matrix met een aangepaste sorteerfunctie.

Naamruimte: sys.

Parameters

Parameter Vereist Type Description
inputArray Ja matrix De matrix die moet worden gesorteerd.
lambda-expressie Ja Expressie De lambda-expressie die wordt gebruikt om twee matrixelementen te vergelijken voor het ordenen. Indien waar, wordt het tweede element na de eerste in de uitvoermatrix geordend.

Retourwaarde

Een matrix.

Opmerking

In het volgende voorbeeld ziet u hoe u de sort functie gebruikt.

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)

De uitvoer uit het voorgaande voorbeeld sorteert de hondenobjecten van de jongste naar de oudste:

Name Type Weergegeven als
dogsByAge Matrix [{"name":"Indy","age":2,"interest":["Butter"]},{"name":"Source","age":3,"interest":["Other dogs"]},{"name ":"Evie","age":5,"interest":["Ball","Frisbee"]},{"name":"Kira","age":8,"interest":["Rubs"]}]

Toobject

toObject(inputArray, lambda expression, [lambda expression])

Converteert een matrix naar een object met een aangepaste sleutelfunctie en optionele aangepaste waardefunctie. Zie items over het converteren van een object naar een matrix.

Naamruimte: sys.

Parameters

Parameter Vereist Type Description
inputArray Ja matrix De matrix die wordt gebruikt voor het maken van een object.
lambda-expressie Ja Expressie De lambda-expressie die wordt gebruikt om het sleutelpredicaat op te geven.
lambda-expressie Nee Expressie De lambda-expressie die wordt gebruikt om het waardepredicaat op te geven.

Retourwaarde

Een object.

Opmerking

In het volgende voorbeeld ziet u hoe u de toObject functie gebruikt met de twee vereiste parameters:

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)

In het voorgaande voorbeeld wordt een object gegenereerd op basis van een matrix.

Name Type Weergegeven als
dogsObject Object {"Evie":{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},"Resource":{"name":"Resource","age":3,"interest":["Other dogs"]},,"Indy":{"name":"Indy","age":2,"interest":["Butter"]},"Kira":{"name":"Kira","age":8,"interest":["Rubs"]}}

De volgende toObject functie met de derde parameter biedt dezelfde uitvoer.

output dogsObject object = toObject(dogs, entry => entry.name, entry => entry)

In het volgende voorbeeld ziet u hoe u de toObject functie gebruikt met drie parameters.

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)

In het voorgaande voorbeeld wordt een object gegenereerd op basis van een matrix.

Name Type Weergegeven als
dogsObject Object {"Evie":{"age":5,"interest":["Ball","Frisbee"]},"Neerkom":{"age":3,"interests":["Other dogs"]},"Indy":{"age":2,"interest":["Butter"]},"Kira":{"age":8,"interest":["Rubs"]}}

Volgende stappen