المفوض في لغة C هو بناء برمجي يسمح لك بتمرير مؤشر دالة كوسيطة. يمكّنك هذا من إنشاء عمليات رد اتصال يمكن استدعاؤها بشكل غير متزامن أو في سياقات مختلفة.
هناك طرق مختلفة لتنفيذ المفوضين في لغة C، بما في ذلك:
الممثلون هم كائنات التي تحدد وظيفة عامل التشغيل ()، مما يجعلها قابلة للاستدعاء بشكل فعال.
struct Functor { int operator()(double d) { return (int)d 1; } };
توفر تعبيرات Lambda بناء جملة موجزًا لإنشاء المفوضين في السطر:
auto func = [](int i) -> double { return 2 * i / 1.15; };
يمكن استخدام مؤشرات الوظائف المباشرة لتمثيل المفوضين:
int f(double d) { ... } typedef int (*MyFuncT)(double d);
توفر مؤشرات وظائف الأعضاء طريقة سريعة لإنشاء مفوضين لأعضاء الفصل:
struct DelegateList { int f1(double d) { } int f2(double d) { } }; typedef int (DelegateList::* DelegateType)(double d);
std::function هو قالب C قياسي يمكنه تخزين أي شيء قابل للاستدعاء، بما في ذلك lambdas، functors، ومؤشرات الوظائف.
#includestd::function f = [any of the above];
يسمح لك الربط بتطبيق الوسائط جزئيًا على المفوض، مما يجعلها ملائمة لاستدعاء وظائف الأعضاء:
struct MyClass { int DoStuff(double d); // actually (MyClass* this, double d) }; std::functionf = std::bind(&MyClass::DoStuff, this, std::placeholders::_1);
يمكن قبول القوالب أي قابل للاستدعاء يطابق قائمة الوسائط:
قالبtemplateيعد المندوبون أداة متعددة الاستخدامات في لغة C تمكنك من تحسين مرونة التعليمات البرمجية الخاصة بك وقابلية صيانتها. من خلال اختيار أسلوب المفوض المناسب لاحتياجاتك المحددة، يمكنك تمرير الوظائف بشكل فعال كمعلمات، والتعامل مع عمليات الاسترجاعات، وتنفيذ البرمجة غير المتزامنة في لغة C .int DoSomething(FunctionT func) { return func(3.14); }
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3