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.
Batasan
Fungsi lambda Bicep memiliki batasan berikut:
- Ekspresi Lambda hanya dapat ditentukan secara langsung sebagai argumen fungsi dalam fungsi-fungsi ini:
filter()
, ,groupBy()
,map()
mapValues()
,reduce()
,sort()
, dantoObject()
. - 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 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: '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')
Output dari contoh sebelumnya:
Nama | Jenis | Nilai |
---|---|---|
oldDogs | Array | [{"name":"Evie","age":5,"interests":["Ball","Frisbee"]},{"name":"Kira","age":8,"interests":["Rubs"]}] |
dogNameIndex | Array | [{"name":"Casper","age":3,"interests":["Other dogs"]}] |
oldDogs mencantumkan anjing yang berusia lima atau lebih; dogNameIndex mengidentifikasi anjing yang jumlah indeksnya kurang dari dua dan yang namanya dimulai dengan huruf "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)
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.
groupBy
groupBy(inputArray, lambda expression)
Membuat objek dengan nilai array dari array, menggunakan kondisi pengelompokan.
Namespace: sys.
Parameter
Parameter | Wajib | Tipe | Deskripsi |
---|---|---|---|
inputArray | Ya | array | Array untuk pengelompokan. |
Ekspresi Lambda | Ya | expression | Ekspresi lambda diterapkan ke setiap elemen array input, dan mengelompokkan elemen menggunakan kondisi pengelompokan. |
Nilai hasil
Sebuah objek.
Contoh
Contoh berikut menunjukkan cara menggunakan fungsi groupBy
.
var inputArray = ['foo', 'bar', 'baz']
output outObject object = groupBy(inputArray, x => substring(x, 0, 1))
Output dari contoh sebelumnya:
Nama | Jenis | Nilai |
---|---|---|
outObject | Objek | {"f":["foo"],"b":["bar","baz"]} |
outObject memperlihatkan objek yang mengelompokkan elemen array berdasarkan huruf pertamanya.
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 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})
Output dari contoh sebelumnya adalah:
Nama | Jenis | Nilai |
---|---|---|
dogNames | Array | ["Evie","Casper","Indy","Kira"] |
sayHi | Array | ["Hello Evie!","Hello Casper!","Hello Indy!","Hello Kira!"] |
mapArray | 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!"}] |
mapArrayIndex | Array | [{"index":0,"val":"Evie"},{"index":1,"val":"Casper"},{"index":2,"val":"Indy"},{"index":3,"val":"Kira"}] |
dogNames menunjukkan nama anjing dari array objek; sayHi menggabungkan "Halo" dan masing-masing nama anjing; mapArray dan mapArrayIndex membuat dua array objek lainnya.
mapValues
mapValues(inputObject, lambda expression)
Membuat objek dari objek input, menggunakan ekspresi lambda untuk memetakan nilai.
Namespace: sys.
Parameter
Parameter | Wajib | Tipe | Deskripsi |
---|---|---|---|
inputObject | Ya | object | Objek yang akan dipetakan. |
Ekspresi Lambda | Ya | expression | Ekspresi lambda yang digunakan untuk memetakan nilai. |
Nilai hasil
Sebuah objek.
Contoh
Contoh berikut menunjukkan cara menggunakan fungsi mapValues
.
var inputObject = { foo: 'foo', bar: 'bar' }
output mapObject object = mapValues(inputObject, val => toUpper(val))
Output dari contoh sebelumnya adalah:
Nama | Jenis | Nilai |
---|---|---|
mapObject | Objek | {foo: 'FOO', bar: 'BAR'} |
mapObject membuat objek lain dengan nilai dalam huruf besar.
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 oddAge int = reduce(ages, 0, (cur, next, i) => (i % 2 == 0) ? cur + next : cur)
Output dari contoh sebelumnya adalah:
Nama | Jenis | Nilai |
---|---|---|
totalAge | int | 18 |
totalAgeAdd1 | int | 19 |
oddAge | int | 7 |
totalAge menjumlahkan usia anjing; totalAgeAdd1 memiliki nilai awal 1, dan menambahkan semua usia anjing ke nilai awal. oddAge menjumlahkan usia anjing yang terletak pada indeks genap, khususnya 5 (Evie) dan 2 (Indy).
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
- Lihat Fungsi Bicep - array untuk fungsi Bicep terkait array lainnya.