سؤال

هذا السؤال لديه بالفعل إجابة هنا:

لقد سمعت أنه يمكن تقديم عمليات الإغلاق في معيار Java التالي الذي من المقرر إصداره في مكان ما في الصيف المقبل.

كيف سيبدو بناء الجملة هذا؟

قرأت في مكان ما أن إدخال عمليات الإغلاق في Java يعد تغييرًا أكبر مما كان عليه الحال في Java 5.هل هذا صحيح؟إيجابيات وسلبيات؟

(نحن نعلم الآن بالتأكيد أنه لن يتم تضمين عمليات الإغلاق في إصدار Java التالي)

أو

يحرر: http://puredanger.com/tech/2009/11/18/closures-after-all/

تحرير 2:إعادة التفكير في JDK7: http://blogs.Oracle.com/mr/entry/rethinking_jdk7

تحرير 3:ليس هناك لحظة نضيعها!: http://blogs.Oracle.com/mr/entry/quartet

هل كانت مفيدة؟

المحلول

القي نظرة على http://www.javac.info/ .

يبدو أن هذا هو كيف سيبدو:

boolean even = { int x => x % 2 == 0 }.invoke(15);

أين ال { int x => x % 2 == 0 } قليلا هو الإغلاق.

نصائح أخرى

يعتمد الأمر حقًا على ما يتم تقديمه، وبالفعل سواء سيتم تقديمه على الإطلاق.هناك عدد من مقترحات الإغلاق بأحجام مختلفة.

يرى صفحة جافا 7 الخاصة بأليكس ميلر للمقترحات ومشاركات المدونة المختلفة.

أنا شخصياً أحب أن أرى عمليات الإغلاق - إنها كذلك جميلة ومفيدة بشكل لا يصدق - لكنني أخشى أن تكون بعض المقترحات مشعرة جدًا.

في تشرين الثاني (نوفمبر) 2009، حدث تحول مفاجئ في هذه القضية سيتم الآن إضافة عمليات الإغلاق إلى جافا 7.

تحديث

لم تحدث عمليات الإغلاق (تعبيرات AKA lambdas) في Java 7.كانت أخيراً تمت إضافته في الإصدار الأول من Java 8 في عام 2014.

لسوء الحظ لن تجد الإغلاق في Java 7.إذا كنت تبحث عن حل أخف للإغلاق في Java، فراجع الآن مشروع lambdaj:

http://code.google.com/p/lambdaj/

هذه هي مميزات جافا 7 http://tech.puredanger.com/java7/#switch الأمثلة مفيدة جدا.

لاحظ أن "نوع الوظيفة" هو في الواقع نوع ضمن الاقتراح:

{int => boolean} evaluateInt;    //declare variable of "function" type
evaluateInt = {int x => x % 2 }; //assignment

أعتقد أنه لا يزال هناك الكثير من الجدل الدائر فيما يتعلق ببناء الجملة الذي سيتم استخدامه في النهاية.سأكون مندهشًا جدًا إذا وصل هذا إلى Java 7 بسبب كل ذلك.

ستكون عمليات الإغلاق مطولة بشكل مزعج إذا لم يكن هناك أي نوع من الاستدلال النوعي ...:(

عمليات الإغلاق لها بعض الحالات الخطيرة.أود أن أقول إن عمليات الإغلاق تمثل تغييرًا أكثر أهمية بكثير من الأدوية العامة وما زال الإصدار الأخير يحتوي على عدد من حالات الحافة المشعرة.على سبيل المثاللا يمكن كتابة/تجميع مكتبات مجموعات Java دون تحذيرات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top