Boost :: Function and Boost :: Bind رائع ، ولكن ما هو رائع حقًا حول Boost :: Lambda؟

StackOverflow https://stackoverflow.com/questions/2167588

سؤال

في الصفحة 175 الفقرة 1 من فعالة C ++ مايرز لديه هذا القول عن الفوذات المعممة والربط:

أجد ما tr1::function يتيح لك أن تفعل ذلك مذهلاً ، فهذا يجعلني وخز في كل مكان. إذا لم تكن وخزًا ، فقد يكون ذلك لأنك تحدق في تعريف ... وتتساءل عما يحدث مع ....

وأنا أتفق معه على الربط والوظيفة. حول Lambda ، حسنًا ، أفهم ما يفعله Lambda وكيف يفعل ذلك ، لكن هل يمكن لشخص ما أن ينشر مقتطفًا على نمط الكتب أو مخطط لفظي لسبب من المفترض أن يفترض Lambda (في مصطلحات Meyers) جواربي؟ أسأل لأن كل منطقة من C ++ حيث يتم استخدام بناء جملة العنصر النائب يبدو وكأنه اختراق لي (نعم ، أعرف ما يكفي عن الطريقة الوظيفية ، لذا يرجى عدم وجود أساسيات) ، وأنا أتفق مع الطريقة التي يتم استخدامها في Bind و MPL ؛ ومع ذلك ، في حالة Lambda ، أريد فقط أن أبررها حتى أتمكن من تحديد الطقس ، يجب أن أدخله في ذخيرتي.

-- تعديل --

هذا حتى الإجابة يذكر أن الإنشاء المضمّن لمورطية باستخدام بناء جملة حامل فقط ، ويذكر الاستخدام المتقدم ، وربما يكون هذا ما أنا عليه بعد ... في الاستخدام المتقدم ، هل ما زال هناك خلق مضمّن فقط من الفوشرات؟

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

المحلول

بناءً على التعليقات المتبقية أعلاه ، والرابط في السؤال ، فإن الإجابة التالية هي الإجابة التي أقبلها (مجتمع المجتمع):

  1. Boost.lambda يملأ الغرض من إنشاء functor المضمّن (هذا هو المصطلح الذي أحبه). يمكن ملء هذه الوظيفة عن طريق الوظيفة + ربط ، لكنها أكثر مطوّلة مما يجب أن تكون ، وبالنسبة للضغط البسيط ، هذا غير ضروري - على سبيل المثال ، النوع الموضح في التعليقات أعلاه.

  2. من الواضح أن هناك تداخلًا دلاليًا بين زوج الوظيفة و Lambda-هذا قطعة أثرية تاريخية ، ولأن Lambda لديها سبب الوجود, ، هو موجود في التعزيز.

نصائح أخرى

ما هو "رائع" حول هذا الأمر ، كما هو الحال مع تعزيز foreach و تعزيز المعلمة, ، حقن/تمديد بناء الجملة إلى C ++ والذي ليس في اللغة ، أي أنه يحاكي وظائف مجهولة المصدر مباشرة كمعلمات.

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