Lambda dengan Parameter
Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 43 dari 56.
Sekarang setelah kamu memahami sintaks lambda dasar, mari kita buat lambda lebih berguna dengan menambahkan parameter. Sama seperti fungsi biasa, lambda dapat menerima nilai input untuk digunakan.
Untuk menambahkan parameter ke lambda, letakkan parameter tersebut di dalam tanda kurung setelah klausa capture:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // Mencetak: Sum: 8Sintaks parameter berfungsi persis seperti parameter fungsi biasa: kamu menuliskan tipe data, lalu nama parameter. Kamu bisa memiliki beberapa parameter yang dipisahkan dengan koma, seperti yang ditunjukkan di atas.
Kamu juga bisa langsung memanggil lambda dengan parameter tanpa menyimpannya:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // Mencetak: Product: 28Kemampuan menerima parameter ini membuat lambda jauh lebih fleksibel dan dapat digunakan kembali, sehingga kamu dapat membuat fungsi kecil yang memproses nilai input yang berbeda setiap kali dipanggil.
Tantangan
MudahBuat program yang menunjukkan ekspresi lambda dengan parameter dengan membangun kalkulator sederhana yang melakukan berbagai operasi matematika. Tantangan ini akan menguji pemahamanmu tentang cara mendefinisikan ekspresi lambda yang menerima nilai input dan mengolahnya.
Input berikut akan diberikan:
- Dua bilangan bulat
num1dannum2yang mewakili angka untuk perhitungan - Sebuah karakter
operationyang mewakili operasi matematika yang harus dilakukan
Programmu harus:
- Membuat ekspresi lambda bernama
addyang menerima dua parameter bilangan bulat dan mencetak jumlahnya dalam formatSum: [result] - Membuat ekspresi lambda bernama
subtractyang menerima dua parameter bilangan bulat dan mencetak selisihnya dalam formatDifference: [result] - Membuat ekspresi lambda bernama
multiplyyang menerima dua parameter bilangan bulat dan mencetak hasil perkaliannya dalam formatProduct: [result] - Membaca kedua angka dan karakter operasi dari input
- Berdasarkan karakter operasi, memanggil lambda yang sesuai dengan kedua angka tersebut
Karakter operasi akan berupa salah satu dari:
+untuk penjumlahan (panggil lambdaadd)-untuk pengurangan (panggil lambdasubtract)*untuk perkalian (panggil lambdamultiply)
Gunakan format output persis berikut berdasarkan operasinya:
Untuk penjumlahan:
Sum: [result]Untuk pengurangan:
Difference: [result]Untuk perkalian:
Product: [result]Ingat, parameter lambda didefinisikan di dalam tanda kurung setelah klausa capture, menggunakan sintaks yang sama dengan parameter fungsi biasa. Simpan setiap lambda dalam variabel menggunakan kata kunci auto, lalu panggil lambda yang sesuai berdasarkan karakter operasi input menggunakan pernyataan if-else atau pernyataan switch.
Coba sendiri
#include <iostream>
using namespace std;
int main() {
// Baca input
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: Buat ekspresi lambda untuk operasi penjumlahan, pengurangan, dan perkalian
// TODO: Gunakan pernyataan if-else atau switch untuk memanggil lambda yang sesuai berdasarkan operasi
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Pointer dan Memori
Apa Itu Pointer?Operator Address-OfOperator DereferencePointer NullPointer dan ArrayMemori Dinamis dengan 'new'Membebaskan Memori dengan 'delete'Rangkuman: Latihan Pointer4Map (Pasangan Kunci-Nilai)
Mengenal std::mapMembuat MapMengakses dan Mengubah NilaiMemeriksa KunciMenghapus PasanganMelakukan Perulangan pada MapRangkuman: Frekuensi Kata7Fungsi Lanjutan
Pass by ReferencePengenalan Ekspresi LambdaLambda dengan ParameterLambda dengan Nilai KembalianPengenalan RekursiFaktorial RekursifPengurutan dengan Lambda2Vektor (array Dinamis)
Memperkenalkan std::vectorMembuat VektorMenambahkan ElemenMengakses ElemenUkuran VektorIterasi dengan for loopFor loop Berbasis RentangMenghapus ElemenRangkuman: Operasi VektorLatihan sendiri: Compiler C++ online