سؤال

في الآونة الأخيرة لقد تم الحصول على متحمس جدا حول دعم lambdas في VC2010.أنا بدأت ببطء إلى فهم كامل إمكانات هذه الميزة في تحويل C++ إلى شيء أفضل كثيرا.

ولكن بعد ذلك أدركت أن هذا محتمل إلى حد كبير يعتمد على تيار الرئيسي لدعم lambdas في المكتبات مثل دفعة QT.
لا أحد يعرف إذا كان هناك خطط لتوسيع هذه المكتبات مع الميزات الجديدة من C++0x?

lambdas عمليا محل الحاجة دفعة::امدا و كل دفعة أن يتفاعل معها.QT يمكن إضافة دعم lambdas في جميع حاوية وربما كبديل طريقة تحديد SLOTs

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

المحلول

وLambdas تناسب بالفعل بشكل جيد للغاية في المكتبات الموجودة - في أي مكان أن وظيفة تقبل كائن وظيفة من نوع معين من قبل معلمة قالب

.

وهذا هو واحد من أشياء عظيمة عنهم - كانوا مثالا كلاسيكيا على ميزة اللغة التي تقنن الممارسات القائمة في بناء الجملة أنيق

.

ومن الواضح أن تصبح مكتبة دفعة امدا زائدة عن الحاجة، ولكن هذا يعني أنها لا تتطلب أي ميزات جديدة تضاف إلى ذلك.

نصائح أخرى

وأنا لا أرى كيف يعتمد استخدام امدا على الدعم من قبل المكتبات. Lambdas للقضاء على الحاجة إلى إنشاء العديد من الفئات فقط لالتفاف خوارزميات صغيرة مختلفة وبدقة تناسب جنبا إلى جنب مع ميزات اللغة / مكتبة أخرى (std::function يتبادر إلى الذهن). أينما كنت تستخدم لتمرير أي كائن وظيفة أو مؤشر دالة، lambdas يمكن استخدامها أيضا.

وهكذا هم في الدرجة الأولى إضافة بديل آخر للاستفادة من رمز والمكتبات القائمة. الطريقة الوحيدة التي يمكنني أن أرى للمكتبات لأفضل لامدا الدعم هو استخدام أكثر النهج أسلوب عملي.

وهناك احتمالات مثل هذه المكتبات تسير إلى الانتظار حتى هناك دعم المترجم المناسب لC ++ 0X الميزات الملائمة، ولا تهتم كثيرا معها حتى المجمعين التيار لا يعتمد عليه. لا تحبس أنفاسك.

هذا ليس صحيحا, لا يمكنك استبدال دفعة::امدا مع C++0x امدا.انظر هنا لبعض الأسباب (عن تعزيز ربط, ولكن أعتقد أن معظم من أنه نقل)

أيضا, @دانيال هذا قد تساعدك على الشروع في العمل باستخدام امدا وظائف/دفعة ربط فتحات.يجعل حياتي من السهل بشكل لا يصدق.

بالإضافة إلى ذلك, @litb من مصادر lambdas لن يتم تغيير (بشع)

ومعظم المكتبات استخدام مؤشرات الدالة القياسية لرد. lambdas 0X C ++ يمكن استخدامها كمؤشرات وظيفة، لذلك لن تحتاج إلى تعديل معظم المكتبات. مكتبات أخرى تستخدم القوالب حتى يتمكنوا من اتخاذ أي كائن استدعاء (أن مثل std::foreach لا تحتاج إلى تعديل).

ووأخرى ميزة الوحيدة C ++ 0X أستطيع أن أفكر في أن المكتبات قد يتغير به يستخدم enums كتابة بشدة. أيضا، قد يبدأ المكتبات استخدام القوالب extern للحد من الأوقات تجميع.

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