الدرس 48: البرمجة الوظيفية في Java: تعبيرات Lambda
قدمت Java 8 ميزات برمجية وظيفية هامة، ولا سيما تعبيرات Lambda، التي تبسط البرمجة من خلال توفير طريقة موجزة لتمثيل الدوال المجهولة.
1. ما هو تعبير Lambda؟
هو كتلة قصيرة من الكود تأخذ معاملات وتعيد قيمة. إنه يوفر بشكل أساسي تنفيذاً لدالة معرفة بواسطة واجهة وظيفية (functional interface).
الصيغة: (parameter list) -> { function body }
2. الواجهات الوظيفية (Functional Interfaces)
الواجهة الوظيفية هي أي واجهة تحتوي على دالة مجردة واحدة فقط. لا يمكن استخدام تعبيرات Lambda إلا في السياقات التي تنفذ فيها واجهة وظيفية.
java @FunctionalInterface interface MyConverter<T, R> { R convert(T from); }
3. أمثلة على صيغة Lambda
أ. الصيغة القياسية (متعددة الأسطر)
java MyConverter<String, Integer> stringToInt = (String s) -> { return Integer.parseInt(s); };
ب. الصيغة المبسطة (تعبير واحد)
إذا كان جسم الدالة تعبيراً واحداً، يمكنك حذف الأقواس المتعرجة وكلمة return وأنواع المعلمات.
java // فرز قائمة باستخدام Lambda: Collections.sort(list, (a, b) -> a.compareTo(b));
4. مراجع الدوال (Method References)
اختصار لتعبير Lambda الذي يستدعي ببساطة دالة موجودة. فهي تجعل الكود أكثر نظافة.
java // باستخدام Lambda: list.forEach(item -> System.out.println(item));
// مراجع الدوال المكافئة: list.forEach(System.out::println);