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
- Zie Bicep-functies : matrices voor meer aan matrices gerelateerde Bicep-functies.