Share 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(), reduce()map(), , 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: 'Kira'
    age: 8
    interests: ['Rubs']
  }
]

output oldDogs array = filter(dogs, dog => dog.age >=5)

In de uitvoer van het vorige voorbeeld ziet u de honden die vijf of ouder zijn:

Name Type Weergegeven als
oldDogs Matrix [{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interest":["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)

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 de volgende voorbeelden ziet u hoe u de groupBy functie gebruikt.

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

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

In de uitvoer van het vorige voorbeeld ziet u de honden die vijf of ouder zijn:

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 mapObject array = map(range(0, length(dogs)), i => {
  i: i
  dog: dogs[i].name
  greeting: 'Ahoy, ${dogs[i].name}!'
})

De uitvoer uit het voorgaande voorbeeld is:

Name Type Weergegeven als
dogNames Matrix ["Evie","Neerkom","Indy","Kira"]
sayHi Matrix ["Hallo Evie!","Hallo Neerkom!","Hallo Indy!","Hallo Kira!"]
mapObject 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!"}]

dogNames toont de namen van de honden uit de matrix van objecten; sayHi voegt "Hello" samen en elk van de namen van de honden; en mapObject maakt een andere matrix met 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)

De uitvoer uit het voorgaande voorbeeld is:

Name Type Weergegeven als
totalage int 18
totalAgeAdd1 int 19

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.

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