سؤال

http://clang.llvm.org/docs/blocklanguagespec.txt

تبدو رائعة حقًا.

لكن،

  1. أنا لا أفهم ذلك.
  2. لا أرى أمثلة عليه.
  3. لا أرى أمثلة على الأفكار التي يصعب التعبير عنها في C ++ كما هي ، ولكن تافهة للتعبير عن الكتل.

يمكن لأي شخص أن تنورني على هذا؟

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

المحلول

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

ها هو مقالة - سلعة مع مزيد من التفاصيل وأمثلة رمز.

نصائح أخرى

Nanotech مرتبط بالفعل بتفسير الكتل. أما بالنسبة لكيفية ارتباط هذا بـ C ++ ، اسمحوا لي أن أذكر رأيي الشخصي: هذا الامتداد هو ليس مفيد في C ++. هنا لماذا:

فيما يتعلق بنوع مرجع الكتلة: لدينا بالفعل "وظائف متعددة الأشكال" التي يمكن أن تحمل بعض الحالة ، انظر تعزيز :: وظيفة, tr1 :: وظيفة. سيتضمن C ++ إصدارًا مصقولًا من هذا في مكتبته القياسية التالية. ميزة "الكتل C" هي أنك لست بحاجة إلى العبث بأشياء مثل Block_copy و Block_release. هذه الوظائف متعددة الأشكال ذكية بما يكفي لإدارة الذاكرة الخاصة بها.

فيما يتعلق ببناء الجملة الحرفي الكتل: إنه بناء جملة جميل يسمح لك بوضع الكود حيث "ينتمي" دون الحاجة إلى الكثير من رمز Boilerplate. ولكن الأمر نفسه ينطبق على الجزء العداد C ++: C ++ 0x Lambdas. لكن ميزة C ++ 0x Lambda تتيح لك أيضًا استخدام كائنات Lambda في حلقات داخلية ضيقة دون تكاليف عالية الأداء لمكالمات الوظائف بسبب إمكانية التحديد.

نظرًا لأن C ++ 0x يمكن استخدام Lambdas في المواقف التي يكون فيها الأداء مشكلة ، ويبدو أن الوظيفة STD :: أسهل في التعامل مع إدارة ذاكرة WRT ، إضافة "كتل C" إلى C ++ تبدو زائدة عن الحاجة. يبدو أن "كتل C" مصممة أكثر خصيصًا باللغات التي لا تدعم القوالب أو المدمرين.

إنهم في الأساس مجرد مصطلح Apple الإغلاق/وظائف مجهولة. كما يلاحظ Nikolai ، فإنهم كيفية استخدام Grand Central Dispatch لتشغيل وظائف متعددة بالتوازي (وبالتالي باستخدام أكثر من جوهر واحد) دون الحاجة إلى القلق بشأن الخيوط والقفل.

بقدر ما أفهم أن هذا التمديد مخصص لـ Apple's الإرسال الكبرى الكبير إطار العمل. الكتل هي كيانات قابلة للجدولة/طابور قابلة للجدولة صغيرة لتشغيلها بالتوازي.

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