Functional Programming
First Class Function
Sebuah objek disebut sebagai first-class function apabila memenuhi syarat berikut :
mendukung anonymous function atau function yang tidak memiliki definisi nama.
mendukung pengiriman function sebagai argumen dari function lain.
function sebagai nilai kembalian dari function lain.
menyimpan function sebagai variable atau dalam struktur data lainnya.
Lambda
Ekspresi lambda mendefinisikan fungsi anonim atau penutupan pada titik di mana ia digunakan. Anda dapat menganggap ekspresi lambda sebagai fungsi yang tidak disebutkan namanya (itulah sebabnya disebut "anonim"). Ekspresi Lambda membuat kode lebih bersih dan ringkas, dan memungkinkan Anda melihat perilaku sebaris di tempat yang ditentukan alih-alih merujuk ke metode eksternal, seperti functor.
[] adalah pengantar lambda atau penutupan lambda
() adalah untuk daftar argumen (Anda dapat melewati tanda kurung ini jika lambda tidak mengambil argumen apa pun)
{} berisi isi lambda
() digunakan untuk memanggil lambda
Proses membuat variabel lingkup luar ini tersedia di dalam lambda disebut capturing.
1. [ captures ] ( params ) -> ret { body }
#include <iostream>
int main()
{
int value = 8;
auto myFunction = [=] (int a) -> int {return value * a * 12;};
std::cout << myFunction(12);
}
#include <iostream>
int main()
{
int value = 8;
auto myFunction = [&] (int a) {return value * a;};
std::cout << myFunction(12);
}
3. [ captures ] { body }
#include <iostream>
int main()
{
int value = 8;
auto myFunction = [=] {return value * 2;};
std::cout << myFunction();
}
Post a Comment for " Functional Programming"