Oleh Timilehin Omolana
MembagikanMenciakMembagikanSurel

Pelajari bagaimana lambdas dapat membuat kode Anda lebih efisien dan lebih mudah dirawat.

Bahasa pemrograman terus berkembang, bahkan bahasa seperti C++ yang sudah lama berdiri sendiri. Mereka menambahkan fungsi ke perpustakaan standar dan membuat perubahan lain untuk memudahkan pekerjaan programmer yang bekerja di bidang yang dinamis.

Sebagai bagian dari pembaruan yang dibawa oleh evolusi bahasa, C++ menambahkan dukungan untuk ekspresi lambda dalam rilis 2011-nya.

Apa sebenarnya ekspresi lambda, dan bagaimana Anda bisa menggunakannya untuk keuntungan Anda sebagai programmer C++?

Apa Itu Ekspresi Lambda?

Ekspresi lambda juga dikenal sebagai fungsi lambda. Ini adalah ekspresi sebaris dengan kemampuan untuk menerima argumen, melakukan operasi, dan mengembalikan nilai, seperti fungsi khas.

Anda dapat menggunakan lambda di dalam fungsi lain dan menetapkannya ke variabel. Fungsi Lamba adalah cara praktis untuk mendefinisikan objek fungsi anonim dalam suatu program. Hampir setiap bahasa mendukung lambda, meskipun setiap implementasi bervariasi dari yang lain.

instagram viewer

Apa Bagian dari Ekspresi C++ Lambda?

Ekspresi Lambda mudah digunakan di C++. Anda dapat memecah sintaks ekspresi lambda di C++ sebagai berikut:

[capture_clause](parameter) opsi { ekspresi_tubuh; }

Sebagai contoh:

ke dalam val = 13;
mobil jumlahPlusVal = [val](ke dalam sebuah, ke dalam b) yg mungkin berubahtidakkecuali ->ke dalam { kembali val + a + b; };
jumlahPlusVal(2, 5); // 20

Kode ini menyatakan jumlahPlusVal variabel otomatis karena ekspresi lambda dapat menerima dan mengembalikan tipe data apa pun. Ini menyerahkannya kepada kompiler untuk menentukan tipe selama kompilasi.

Dari kode di atas, Anda dapat melihat bahwa ekspresi lambda berisi beberapa bagian yang menentukan cara operasinya. Berikut ini ikhtisar singkat dari masing-masing komponen ini.

  1. Klausa tangkap: Ini adalah bagian pertama dari ekspresi lambda di mana Anda dapat menentukan variabel yang sudah ada sebelumnya atau menentukan variabel baru untuk digunakan di badan ekspresi. Ada berbagai cara untuk menentukan tangkapan, misalnya:
    auto addTwo = [foo](){ kembali foo + 2; }; // menurut nilai
    auto addThree = [&bar](){ kembali bar + 3; }; // dengan referensi
    auto addAllVal = [=](){ kembali foo + batang; }; // semua berdasarkan nilai
    auto addAllRef = [&](){ kembali foo + batang; }; // semua dengan referensi

    // buat variabel dalam klausa tangkap
    auto createVarInCapture = [fooBar = foo + bar](){ kembali fooBar * 5; };

    // no capture - mengembalikan kesalahan karena foo tidak dapat diakses
    auto errorExpression = [](){ kembali foo + 2; };

  2. Parameter: Bagian dari ekspresi lambda ini juga opsional. Ini berisi parameter fungsi yang dibutuhkan oleh lambda. Ini tidak berbeda dari cara biasa Anda mendefinisikan parameter fungsi di C++.
  3. Pilihan: Anda juga dapat menentukan opsi saat mendefinisikan ekspresi lambda. Beberapa opsi yang dapat Anda gunakan adalah: yg mungkin berubah, pengecualian (misalnya tidakkecuali dalam kode sampel pertama), ->return_type (misalnya -> ke dalam), memerlukan, atribut, dll. Itu yg mungkin berubah option sering digunakan karena memungkinkan tangkapan dapat dimodifikasi di dalam lambda. Kode di bawah ini menunjukkan ini.
    ke dalam nilai = 10;

    // mengembalikan kesalahan - nilai adalah const di dalam ekspresi
    pengurangan otomatis = [nilai](){ kembali --nilai; };
    kenaikan otomatis = [nilai]() bisa berubah { kembali ++ nilai; };
    kenaikan(); // 11

    Meskipun opsi lain jarang digunakan, Anda dapat memperoleh informasi lebih lanjut tentangnya di cppreference.com halaman di lambdas.
  4. Tubuh ekspresi: Ini adalah isi ekspresi lambda yang mengeksekusi dan mengembalikan nilai, seperti halnya fungsi. Jika perlu, Anda dapat membagi isi ekspresi lambda menjadi lebih dari satu baris. Namun, praktik terbaiknya adalah membuatnya sesingkat mungkin untuk mencegah kode yang tidak teratur.

Apa Manfaat Ekspresi Lambda?

Ada banyak keuntungan menggunakan fungsi lambda dalam kode Anda. Terlepas dari peningkatan kecepatan dan efisiensi pengembangan, manfaat utama yang Anda terima dari lambdas adalah sebagai berikut:

  • Ekspresi Lambda membantu menjaga kode tetap bersih. Salah satu cara terbaik untuk menjaga kode Anda tetap sederhana dan rapi adalah dengan menggunakan lambda jika memungkinkan. Ini bisa sangat membantu dalam mempertahankan struktur kode yang dapat dibaca dan digunakan kembali.
  • Anda dapat meneruskan lambda ke fungsi lain sebagai parameter. Itu Pustaka standar C++std:: sort() metode memanfaatkan manfaat ini. Anda dapat melewatkan lambda sebagai salah satu parameter metode ini untuk menentukan bagaimana fungsi harus melakukan pengurutan. Contohnya:
     std:: vektor<ke dalam> arr = {2, 5, 1, 3, 4};
    std:: sort (arr.begin(), arr.end(), [](ke dalam sebuah, ke dalam b){ kembali a < b; });
    // arr = {1, 2, 3, 4, 5}
  • Lambda dapat digunakan kembali. Terkadang, Anda mungkin ingin membuat blok kode yang dapat digunakan kembali dalam lingkup fungsi dalam program Anda tanpa harus mendefinisikan fungsi baru. Lambdas bisa sangat membantu dalam kasus seperti itu. Pertimbangkan contoh berikut dari ekspresi lambda yang dapat digunakan kembali:
    #termasuk <iostream>
    menggunakan ruang namastd;

    ke dalamutama(){
    // mendefinisikan lambda yang dapat digunakan kembali
    auto addUp = [](auto a, auto b, auto c) noexcept {
    cout <<"Sekarang bertambah... "<< sebuah <<", "<< b <<" dan "<< c << akhir;
    kembali a + b + c ;
    };

    cout << tambahan (22, 33, 44) << akhir;
    cout << tambahan (string("Senang "), rangkaian("Kelahiran"), rangkaian("hari")) << akhir;
    cout<BENAR, Salah, BENAR) << std:: endl; // dieksekusi sebagai angka (1 dan 0)
    }

    Program ini menghasilkan hasil sebagai berikut: Contoh ini menunjukkan betapa sederhananya mendefinisikan lambda sehingga Anda dapat menggunakannya dengan jenis apa pun.

Menggunakan Lambdas di C++

Ada banyak manfaat lain yang ditawarkan ekspresi lambda, dan Anda akan menemukannya saat struktur program Anda tumbuh lebih kompleks. Faktanya, pemrogram C++ terkadang menyebut ekspresi lambda sebagai penutupan karena itu adalah cara yang bagus untuk mengimplementasikan penutupan dalam kode.

Anda harus mempertimbangkan ekspresi lambda jika Anda ingin memasukkan konsep C++ modern ke dalam basis kode Anda.

11 Cuplikan Kode C++ untuk Masalah Pemrograman Sehari-hari

Baca Selanjutnya

MembagikanMenciakMembagikanSurel

Topik-topik yang berkaitan

  • Pemrograman
  • Pemrograman
  • Tutorial Pengkodean

Tentang Penulis

Timilehin Omolana (5 Artikel Diterbitkan)

Timilehin adalah seorang Insinyur Perangkat Lunak dan penulis Teknis yang suka menjelajahi dunia teknologi sisi server dan sistem terdistribusi.

More From Timilehin Omolana

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan