Mirzo Ulugʻbek nomidagi
Oʻzbekiston Milliy universiteti Jizzax filiali
“Amaliy matematika” fakulteti
“Amaliy matematika va informatika” kafedrasi
“DASTURLASH TEXNALOGIYALARI’’
fanidan
Mustaqil ish
Mavzu: “Lyamda ifodalar”
Bajardi: 104-19-guruh talabasi Abduqodirov U.
Qabul qildi : Ismoilov I.
REJA:l
I. KIRISH……………………………………………………………………………
II.ASOSIY QISM .
1.Dasturning madsad va vazifalari…………………………………………………………………
LAMBDA IFODALAR
Java tiliga JDK 8 ning chiqarilishi bilan kiritilgan innovatsiyalar orasida lambda ifodalari mavjud. Lambda - bu alohida o'zgaruvchiga ajratilishi va dasturning turli joylarida bir necha marta chaqirilishi mumkin bo'lgan ko'rsatmalar to'plami.
Lambda ifodasining asosi -> o'qni ifodalovchi lambda operatoridir. Bu operator lambda ifodasini ikki qismga ajratadi: chap qismda ifoda parametrlari ro'yxati, o'ng qismning o'zi esa barcha amallar bajariladigan lambda ifodasining tanasini ifodalaydi.
Lambda ifodasi o'z-o'zidan bajarilmaydi, lekin funktsional interfeysda aniqlangan usulning amalga oshirilishini tashkil qiladi. Funktsional interfeys amalga oshirilmasdan faqat bitta usulni o'z ichiga olishi muhimdir.
Misol:
public class LambdaApp {
public static void main(String[] args) {
Operationable operation;
operation = (x,y)->x+y;
int result = operation.calculate(10, 20);
System.out.println(result); //30
}
}
interface Operationable{
int calculate(int x, int y);
}
Operationable interfeysi funksional interfeys vazifasini bajaradi, unda amalga oshirilmagan bitta metod - calculate usuli aniqlanadi. Bu usul ikkita parametr - butun sonlarni oladi va ba'zi bir butun sonni qaytaradi.
Aslida, lambda iboralari avval Java-da qo'llanilgan ichki anonim sinflar uchun biroz qisqartirilgan. Xususan, oldingi misolni quyidagicha qayta yozishimiz mumkin:
public class LambdaApp {
public static void main(String[] args) {
Operationable op = new Operationable(){
public int calculate(int x, int y){
return x + y;
}
};
int z = op.calculate(20, 10);
System.out.println(z); // 30
}
}
interface Operationable{
int calculate(int x, int y);
}
Lambda ifodasini e'lon qilish va ishlatish uchun asosiy dastur bir qator bosqichlarga bo'linadi:
1. Funktsional interfeysga havolani aniqlash:
2. Lambda ifodasini yaratish:
Bundan tashqari, lambda ifodasining parametrlari Operatsion interfeysning yagona usuli parametrlariga mos keladi va natija interfeys usulining qaytish natijasiga mos keladi. Aytgancha, biz lambda ifodasidan natijani qaytarish uchun return kalit so'zidan foydalanishimiz shart emas.
Shunday qilib, interfeys usulida ikkala parametr ham int turini ifodalaydi, ya'ni lambda ifodasi tanasida biz ularga qo'shimchani qo'llashimiz mumkin. Qo'shish natijasi ham int turini ifodalaydi, uning ob'ekti interfeys usuli bilan qaytariladi.
Lambda ifodasini e'lon qilish va ishlatish uchun asosiy dastur bir qator bosqichlarga bo'linadi:
3. Interfeys usuliga qo'ng'iroq sifatida lambda ifodasidan foydalanish:
Parametrlarni qo'shish operatsiyasi lambda ifodasida aniqlanganligi sababli, usulning natijasi 10 va 20 raqamlarining yig'indisi bo'ladi.
Shu bilan birga, bitta funktsional interfeys uchun biz ko'plab lambda ifodalarini belgilashimiz mumkin.
MASALAN:
Operationtionable operation1 = (int x, int y)-> x + y;
Operationable operation2 = (int x, int y)-> x - y;
Operationable operation3 = (int x, int y)-> x * y;
System.out.println(operation1.calculate(20, 10)); //30
System.out.println(operation2.calculate(20, 10)); //10
System.out.println(operation3.calculate(20, 10)); //200
Parametrlarni Lambda ifodasiga o'tkazish
Lambda ifodasining parametrlari funktsional interfeysdan usul parametrlariga mos kelishi kerak. Lambda ifodasini yozishda parametrlar turini yozish shart emas, garchi printsipial jihatdan buni amalga oshirish mumkin, masalan:
operation = (int x, int y)->x+y;
Agar usul hech qanday parametrni olmasa, bo'sh qavslar yoziladi, masalan:
()-> 30 + 20;
Agar usul faqat bitta parametrni olsa, u holda qavslar olib tashlanishi mumkin:
n-> n * n;
Do'stlaringiz bilan baham: |