Sdílet prostřednictvím


Funkce lambda pro Bicep

Tento článek popisuje funkce lambda, které se mají použít v Bicep. Výrazy lambda (nebo funkce lambda) jsou v podstatě bloky kódu, které lze předat jako argument. Můžou mít více parametrů, ale jsou omezeny na jeden řádek kódu. Výraz lambda v bicep je v tomto formátu:

<lambda variable> => <expression>

Poznámka:

Funkce lambda jsou podporované pouze v rozhraní příkazového řádku Bicep verze 0.10.X nebo vyšší.

Omezení

Funkce lambda bicep má tato omezení:

  • Výraz lambda lze zadat pouze přímo jako argumenty funkce v těchto funkcích: filter(), groupBy(), , mapValues()map(), reduce(), , sort()a toObject().
  • Použití proměnných lambda (dočasných proměnných používaných ve výrazech lambda) uvnitř přístupu k prostředkům nebo polím modulů se v současné době nepodporuje.
  • Použití proměnných lambda uvnitř listKeys funkce se v současné době nepodporuje.
  • Použití proměnných lambda uvnitř referenční funkce se v současné době nepodporuje.

filter

filter(inputArray, lambda expression)

Filtruje pole pomocí vlastní funkce filtrování.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
inputArray Ano pole Pole, které chcete filtrovat.
výraz lambda Ano výraz Výraz lambda se použije u každého vstupního prvku pole. Pokud je výsledek pravdivý, položka je zahrnuta do výstupního pole; jinak se položka zahodí.

Vrácená hodnota

Pole.

Příklady

Následující příklady ukazují, jak funkci používat filter .

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

Výstupy z předchozího příkladu:

Name Typ Hodnota
staréDogs Pole [{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}]
dogNameIndex Pole [{"name":"Casper","age":3,"interests":["Ostatní psi"]}]

starýDogs uvádí psy, které jsou pět nebo starší; dogNameIndex identifikuje psy, jejichž číslo indexu je menší než dvě, a jehož název začíná písmenem "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)

Výstupy z předchozího příkladu:

Name Typ Hodnota
filteredLoop Pole [6, 7, 8, 9]
isEven Pole [0, 2, 4, 6, 8]

FilterdLoop zobrazuje čísla v matici větší než 5. Funkce isEven zobrazuje sudá čísla v matici.

Groupby

groupBy(inputArray, lambda expression)

Vytvoří objekt s maticovými hodnotami z pole pomocí podmínky seskupení.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
inputArray Ano pole Pole pro seskupení.
výraz lambda Ano výraz Výraz lambda se použije pro každý vstupní prvek pole a seskupí prvky pomocí podmínky seskupení.

Vrácená hodnota

Objekt.

Příklady

Následující příklad ukazuje, jak používat groupBy funkci.

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

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

Výstup z předchozího příkladu:

Name Typ Hodnota
outObject Object {"f":["foo"],"b":["bar","baz"]}

OutObject zobrazuje objekt, který seskupuje prvky pole podle jejich prvních písmen.

map

map(inputArray, lambda expression)

Použije vlastní funkci mapování na každý prvek pole.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
inputArray Ano pole Pole, které se má mapovat.
výraz lambda Ano výraz Výraz lambda použitý pro každý vstupní prvek pole, aby se vygenerovalo výstupní pole.

Vrácená hodnota

Pole.

Příklad

Následující příklad ukazuje, jak používat map funkci.

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

Výstupy z předchozího příkladu jsou:

Name Typ Hodnota
dogNames Pole ["Evie","Casper","Indy","Kira"]
sayHi Pole ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"]
mapArray Pole [{"i":0,"pes":"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!"}]
mapArrayIndex Pole [{"index":0,"val":"Evie"},{"index":1,"val":"Casper"},{"index":2,"val":"Indy"},{"index":3,"val":"Kira"}]

dogNames zobrazuje názvy psů z pole objektů; sayHi zřetězí slovo "Hello" a každé jméno psa; mapArray a mapArrayIndex vytvoří další dvě pole objektů.

mapValues

mapValues(inputObject, lambda expression)

Vytvoří objekt ze vstupního objektu pomocí výrazu lambda k mapování hodnot.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
inputObject Ano objekt Objekt, který se má mapovat.
výraz lambda Ano výraz Výraz lambda použitý k mapování hodnot.

Vrácená hodnota

Objekt.

Příklad

Následující příklad ukazuje, jak používat mapValues funkci.

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

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

Výstup z předchozího příkladu je:

Name Typ Hodnota
mapObject Object {foo: 'FOO', bar: 'BAR'}

mapObject vytvoří další objekt s hodnotami velkými písmeny.

Snížit

reduce(inputArray, initialValue, lambda expression)

Zmenšuje pole pomocí vlastní funkce redukce.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
inputArray Ano pole Pole, které chcete snížit.
Initialvalue Ano jakékoliv Počáteční hodnota.
výraz lambda Ano výraz Výraz lambda použitý k agregaci aktuální hodnoty a další hodnoty.

Vrácená hodnota

Cokoliv.

Příklad

Následující příklady ukazují, jak funkci používat 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)
output oddAge int = reduce(ages, 0, (cur, next, i) => (i % 2 == 0) ? cur + next : cur)

Výstupy z předchozího příkladu jsou:

Name Typ Hodnota
totalAge int 18
totalAgeAdd1 int 19
lichá int 7

totalAge sečte věk psů; totalAgeAdd1 má počáteční hodnotu 1 a sečte všechny věky psů k počátečním hodnotám. Lichá hodnota sečte věk psů, které se nacházejí na sudých indexech, konkrétně 5 (Evie) a 2 (Indy).

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

Výstup z předchozího příkladu je:

Name Typ Hodnota
reduceObjectUnion objekt {"foo":123,"bar":456,"baz":789}

Funkce sjednocení vrátí jeden objekt se všemi prvky z parametrů. Volání funkce sjednocuje páry klíč-hodnota objektů do nového objektu.

sort

sort(inputArray, lambda expression)

Seřadí pole pomocí vlastní funkce řazení.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
inputArray Ano pole Pole, které chcete seřadit.
výraz lambda Ano výraz Výraz lambda použitý k porovnání dvou prvků pole pro řazení. Pokud je pravda, druhý prvek bude seřazen za prvním ve výstupním poli.

Vrácená hodnota

Pole.

Příklad

Následující příklad ukazuje, jak používat sort funkci.

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)

Výstup z předchozího příkladu seřadí objekty psa od nejstaršího po nejstarší:

Name Typ Hodnota
psiByAge Pole [{"name":"Indy","age":2,"interests":["Butter"]},{"name":"Casper","age":3,"interests":["Ostatní psi"]},{"name ":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}]

Toobject

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

Převede pole na objekt s vlastní funkcí klíče a volitelnou vlastní hodnotou. Podívejte se na položky o převodu objektu na pole.

Obor názvů: sys.

Parametry

Parametr Požaduje se Type Popis
inputArray Ano pole Pole použité k vytvoření objektu.
výraz lambda Ano výraz Výraz lambda použitý k zadání predikátu klíče.
výraz lambda No výraz Výraz lambda použitý k zadání predikátu hodnoty.

Vrácená hodnota

Objekt.

Příklad

Následující příklad ukazuje, jak používat toObject funkci se dvěma požadovanými parametry:

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)

Předchozí příklad vygeneruje objekt založený na poli.

Name Typ Hodnota
dogsObject Object {"Evie":{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},"Casper":{"name":"Casper","age":3,"interests":["Ostatní psi"]},"Indy":{"name":"Indy","age":2,"interests":["Butter"]},"Kira":{"name":"Kira","age":8,"interests":["Rubs"]}}

Následující toObject funkce s třetím parametrem poskytuje stejný výstup.

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

Následující příklad ukazuje, jak používat toObject funkci se třemi parametry.

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)

Předchozí příklad vygeneruje objekt založený na poli.

Name Typ Hodnota
dogsObject Object {"Evie":{"age":5,"interests":["Ball","Frisbee"]},"Casper":{"age":3,"interests":["Ostatní psi"]},"Indy":{"age":2,"interests":["Butter"]},"Kira":{"age":8,"interests":["Rubs"]}}

Další kroky