Lambda ifodalari misollar bilan. Yuqori darajadagi funktsiyalar va lambdalar


Download 37.33 Kb.
bet4/17
Sana25.10.2023
Hajmi37.33 Kb.
#1720034
1   2   3   4   5   6   7   8   9   ...   17
Bog'liq
Lambda ifodalari misollar bilan

Lambda ifodalarida kod bloklari
Lambda ifodalarining ikki turi mavjud: bitta qatorli ifoda va kod bloki. Bir qatorli ifodalarga misollar yuqorida ko'rsatilgan. Blok iboralar jingalak qavslar ichiga olinadi. Blok lambda iboralarida siz ichki o'rnatilgan bloklardan, halqalardan foydalanishingiz mumkin, agar, konstruksiyalarni almashtirish, o'zgaruvchilar yaratish va hokazo. Agar blok lambda ifodasi qiymatni qaytarishi kerak bo'lsa, qaytarish bayonoti aniq ishlatiladi:
Operatsion operatsiya = (int x, int y)-> ( if(y==0) 0 ni qaytaradi; aks holda x/y; ); System.out.println(operation.hisoblash(20, 10)); //2 System.out.println(operation.hisoblash(20, 0)); //0
Umumiy funksiya interfeysi
Funktsional interfeys umumiy bo'lishi mumkin, ammo lambda ifodasida generiklarga ruxsat berilmaydi. Bunday holda, biz interfeys ob'ektini ma'lum bir turga kiritishimiz kerak, keyin u lambda ifodasida ishlatiladi. Masalan:
Ommaviy sinf LambdaApp ( umumiy statik void main(String args) ( Operatsion operatsiya1 = (x, y)-> x + y; ishlashga yaroqli operatsiya2 = (x, y) -> x + y; System.out.println(operation1.hisoblash(20, 10)); //30 System.out.println(operation2.hisoblash("20", "10")); //2010 ) ) interfeysi ishlaydi ( T hisoblash(T x, T y); )
Shunday qilib, lambda ifodasini e'lon qilganda, u parametrlar qaysi turni ifodalashini va qaysi turni qaytarishini allaqachon biladi.
Ushbu hujjat arxivlangan va endi saqlanmaydi.
Visual Studio 2017 uchun eng dolzarb hujjatlar bu Visual Studio 2017 Documentation hisoblanadi.
lambda ifodasi (yoki shunchaki lambda) C++ 11 da qulay usul Anonim funksiya ob'ektining ta'riflari to'g'ridan-to'g'ri chaqirilgan yoki funktsiyaga argument sifatida o'tish joyida. Odatda, lambda ifodalari algoritmlarga yoki asinxron usullarga o'tkaziladigan bir nechta kod qatorlarini inkapsulyatsiya qilish uchun ishlatiladi. Ushbu maqolada lambda ifodalarining ta'rifi, ularni boshqa dasturlash usullari bilan taqqoslash, ularning afzalliklari tavsifi va oddiy misol keltirilgan.
ISO C++ standarti uchinchi argument sifatida std::sort() funksiyasiga uzatiladigan oddiy lambda ifodasini namoyish etadi:
#o'z ichiga oladi #o'z ichiga oladi void abssort(float * x, unsigned n) ( std::sort(x, x + n, // Lambda ifodasi boshlanadi (float a, float b)) (qaytish (std::abs(a))< std::abs(b)); } // end of lambda expression ); }
Quyidagi rasmda lambda ifodasining tuzilishi ko'rsatilgan:
taklifni qabul qilish(C++ spetsifikatsiyasida bu lambda-introduktor.)
parametrlar ro'yxati(shart emas). (Shuningdek, deb ataladi lambda deklaratori.)
almashtiriladigan spetsifikatsiya(shart emas).
istisno spetsifikatsiyasi(shart emas).
yakuniy qaytarish turi(shart emas).
lambda ifodasining tanasi)

Download 37.33 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   17




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling