تخطَّ إلى المحتوى

Lambda

التعبير اللامي Lambda Lambda

Lambda تعبير دالي قصير بلا اسم — بديلanonymous class مع الواجهات الدالية.

Lambda تعبير يُعرّف دالة inline بدون اسم صنف. يعمل فقط مع الواجهات الدالية (واجهة بدالة مجرّدة واحدة). الصيغة: (parameters) -> expression أو (parameters) -> { statements }.

الصياغة

() -> expression
(param) -> expression
(p1, p2) -> { statements; return value; }

📄 مثال

import java.util.function.*;

// بسيطة:
Runnable task = () -> System.out.println("يعمل");
Function<String, Integer> len = s -> s.length();
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;

// استخدام:
System.out.println(len.apply("مرحبًا")); // 6
System.out.println(add.apply(3, 4));      // 7

// مع المجموعات:
List<String> names = List.of("أ", "ب", "ج", "د");
names.forEach(n -> System.out.println(n));
List<String> sorted = names.stream()
    .sorted(Comparator.comparingInt(String::length))
    .toList();

أهم النقاط

العنصرالوظيفة
() -> exprبدون معاملات
x -> exprمعامل واحد بدون أقواس
(a, b) -> exprمعدّل معاملات
(a, b) -> { return expr; }كتلة مع return صريح

💡 نصائح عملية

  • استخدم @FunctionalInterface للتأكد أن الواجهة تصلح لـ lambda
  • Lambda أقصر بكثير من anonymous class — استخدمها عند الإمكان

⚠️ أخطاء شائعة

  • nxing lambda مع واجهة فيها عدة دوال مجرّدة — خطأ ترجمة
  • nxing return صريح داخل lambda بسيط (بدون أقواس): x -> return x+1; خطأ

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.