Syarat gratis ongkir cukup dinyatakan dengan satu perbandingan: total belanja minimal tertentu. Menulis blok statement untuk logika satu ekspresi terasa bertele-tele. Expression lambda menghilangkan kurawal dan keyword return; nilai ekspresi otomatis menjadi return value. Bentuk inilah yang paling sering kita temui di kode .NET modern, termasuk di dalam LINQ.
Expression lambda bukan sekadar gaya penulisan; bentuk ini membuka dua jalan kompilasi. Ditugaskan ke Func atau Action, lambda menjadi delegate yang dieksekusi. Ditugaskan ke Expression<Func<...>>, lambda menjadi data yang dianalisis. Section ini memakai jalur pertama, dan bab Expression Trees Introduction membuka jalur kedua.
Aturan menyusunnya pun konsisten: satu lambda menangani satu keputusan, satu lambda menangani satu transformasi. Kriteria gratis ongkir di bawah memakai pola tersebut untuk menguji total belanja terhadap minimal yang ditentukan.
Bentuk Ringkas Satu Ekspresi #
int totalBelanja = 180000;
int minimalGratisOngkir = 150000;
Func<int, bool> gratisOngkir = total => total >= minimalGratisOngkir;
Predicate<int> cekMinimal = MemenuhiMinimal;
if (gratisOngkir(totalBelanja) && cekMinimal(totalBelanja))
{
Console.WriteLine("Gratis ongkir");
}
else
{
Console.WriteLine("Belum memenuhi syarat");
}
static bool MemenuhiMinimal(int total) => total >= 150000;Output yang Dihasilkan:
Gratis ongkirBedah Kode Baris per Baris #
Mari kita telaah kode di atas:
- Baris 4:
total => total >= minimalGratisOngkiradalah expression lambda. Tanpa kurawal dan tanpareturn, hasil perbandingan langsung menjadi return value untukFunc<int, bool>. - Baris 5: Method group
MemenuhiMinimalmenunjukkan alternatif lambda: keduanya berperilaku sama sebagai delegatebool. - Baris 7-12: Kedua delegate dipanggil dengan
totalBelanja = 180000. Nilai itu melampaui 150000, sehingga kedua uji bernilaitruedan cabangifmencetakGratis ongkir. - Baris 4 dan 5 berdampingan: Lambda membaca variabel
minimalGratisOngkirdari sekitarnya; mekanisme penangkapan ini dibedah pada bab Closure.
Kombinasi && pada baris uji menumpuk dua syarat yang kebetulan bernilai sama; dalam praktik, dua sumber minimal biasanya berbeda. Yang perlu dibawa pulang adalah bentuknya: satu ekspresi per lambda, satu tanggung jawab per variabel.