Fungsi Lambda untuk Bicep

Artikel ini menjelaskan fungsi lambda untuk digunakan di Bicep. Ekspresi lambda (atau fungsi lambda) pada dasarnya adalah blok kode yang dapat diteruskan sebagai argumen. Mereka dapat mengambil beberapa parameter, tetapi dibatasi untuk satu baris kode. Dalam Bicep, ekspresi lambda dalam format ini:

<lambda variable> => <expression>

Catatan

Fungsi lambda hanya didukung dalam Bicep CLI versi 0.10.X atau yang lebih tinggi.

Pembatasan

Fungsi lambda Bicep memiliki batasan berikut:

  • Ekspresi Lambda hanya dapat ditentukan secara langsung sebagai argumen fungsi dalam fungsi-fungsi ini: filter(), , map()reduce(), sort(), dan toObject().
  • Menggunakan variabel lambda (variabel sementara yang digunakan dalam ekspresi lambda) di dalam akses array sumber daya atau modul saat ini tidak didukung.
  • Menggunakan variabel lambda di listKeys dalam fungsi saat ini tidak didukung.
  • Menggunakan variabel lambda di dalam fungsi referensi saat ini tidak didukung.

filter

filter(inputArray, lambda expression)

Memfilter array dengan fungsi pemfilteran kustom.

Namespace: sys.

Parameter

Parameter Wajib Tipe Deskripsi
inputArray Ya array Array yang akan difilter.
Ekspresi Lambda Ya expression Ekspresi lambda diterapkan ke setiap elemen array input. Jika hasilnya benar, item akan disertakan dalam array output; jika tidak, item dibuang.

Nilai hasil

Array.

Contoh

Contoh berikut menunjukkan cara menggunakan filter fungsi .

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)

Output dari contoh sebelumnya menunjukkan anjing yang berusia lima atau lebih tua:

Nama Jenis Nilai
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)

Output dari contoh sebelumnya:

Nama Jenis Nilai
filteredLoop Array [6, 7, 8, 9]
isEven Array [0, 2, 4, 6, 8]

filterdLoop menunjukkan angka dalam array yang lebih besar dari 5; dan isEven menunjukkan angka genap dalam array.

peta

map(inputArray, lambda expression)

Menerapkan fungsi pemetaan kustom ke setiap elemen array.

Namespace: sys.

Parameter

Parameter Wajib Tipe Deskripsi
inputArray Ya array Array yang akan dipetakan.
Ekspresi Lambda Ya expression Ekspresi lambda diterapkan ke setiap elemen array input, untuk menghasilkan array output.

Nilai hasil

Array.

Contoh

Contoh berikut menunjukkan cara menggunakan fungsi 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}!'
})

Output dari contoh sebelumnya adalah:

Nama Jenis Nilai
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 menunjukkan nama anjing dari array objek; sayHi menggabungkan "Halo" dan masing-masing nama anjing; dan mapObject membuat array objek lain.

reduce

reduce(inputArray, initialValue, lambda expression)

Mengurangi array dengan fungsi pengurangan kustom.

Namespace: sys.

Parameter

Parameter Wajib Tipe Deskripsi
inputArray Ya array Array yang akan dikurangi.
initialValue Ya any Nilai awal.
Ekspresi Lambda Ya expression Ekspresi lambda yang digunakan untuk mengagregasi nilai saat ini dan nilai berikutnya.

Nilai hasil

Setiap.

Contoh

Contoh berikut menunjukkan cara menggunakan reduce fungsi .

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 dari contoh sebelumnya adalah:

Nama Jenis Nilai
totalAge int 18
totalAgeAdd1 int 19

totalAge menjumlahkan usia anjing; totalAgeAdd1 memiliki nilai awal 1, dan menambahkan semua usia anjing ke nilai awal.

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

Output dari contoh sebelumnya adalah:

Nama Jenis Nilai
reduceObjectUnion object {"foo":123,"bar":456,"baz":789}

Fungsi union mengembalikan satu objek dengan semua elemen dari parameter. Panggilan fungsi menyarangkan pasangan nilai kunci objek ke dalam objek baru.

urutkan

sort(inputArray, lambda expression)

Mengurutkan array dengan fungsi pengurutan kustom.

Namespace: sys.

Parameter

Parameter Wajib Tipe Deskripsi
inputArray Ya array Array yang akan diurutkan.
Ekspresi Lambda Ya expression Ekspresi lambda digunakan untuk membandingkan dua elemen array untuk pemesanan. Jika true, elemen kedua akan diurutkan setelah yang pertama dalam array output.

Nilai hasil

Array.

Contoh

Contoh berikut menunjukkan cara menggunakan fungsi 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)

Output dari contoh sebelumnya mengurutkan objek anjing dari yang termuda ke yang tertua:

Nama Jenis Nilai
dogsByAge Array [{"name":"Indy","age":2,"interests":["Butter"]},{"name":"Casper","age":3,"interests":["Other dogs"]},{"name":"Casper","age":3,"interests":["Other dogs"]},{"name":"Casper","age":3,"interests":["Other dogs"]},{"name":"Casper","age":3,"interests":["Other dogs"]},{"name":"Casper","age":3,"interests":["Other dogs"]},{"name":"Cas name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}]

toObject

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

Mengonversi array ke objek dengan fungsi kunci kustom dan fungsi nilai kustom opsional. Lihat item tentang mengonversi objek menjadi array.

Namespace: sys.

Parameter

Parameter Wajib Tipe Deskripsi
inputArray Ya array Array yang digunakan untuk membuat objek.
Ekspresi Lambda Ya expression Ekspresi lambda yang digunakan untuk memberikan predikat kunci.
Ekspresi Lambda No expression Ekspresi lambda yang digunakan untuk memberikan predikat nilai.

Nilai hasil

Sebuah objek.

Contoh

Contoh berikut menunjukkan cara menggunakan toObject fungsi dengan dua parameter yang diperlukan:

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)

Contoh sebelumnya menghasilkan objek berdasarkan array.

Nama Jenis Nilai
dogsObject Objek {"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"]}}

Fungsi berikut toObject dengan parameter ketiga menyediakan output yang sama.

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

Contoh berikut menunjukkan cara menggunakan toObject fungsi dengan tiga parameter.

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)

Contoh sebelumnya menghasilkan objek berdasarkan array.

Nama Jenis Nilai
dogsObject Objek {"Evie":{"age":5,"interests":["Ball","Frisbee"]},"Casper":{"age":3,"interests":["Anjing lainnyas"]},"Indy":{"age":2,"interests":["Butter"]},"Kira":{"age":8,"interests":["Rubs"]}}

Langkah berikutnya