سؤال

وأنا أبحث لنقل بعض من بلادي أخف وزنا metaprogramming من Nemerle إلى boo وأنا في محاولة لمعرفة كيفية تعريف المشغلين المخصصة. على سبيل المثال، يمكنني أن أفعل ما يلي في Nemerle:

macro @<-(func, v) {
    <[ $func($v) ]>
}

وبعد هذين يعادل:

foo <- 5;
foo(5);

وأنا لا يمكن العثور على طريقة للقيام بذلك في بو - أي أفكار

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

المحلول

وعلى الرغم بو يدعم المشغل الحمولة الزائدة من خلال تحديد وظيفة مشغل ثابتة المناسبة (op_addition)، وتدعم أيضا وحدات الماكرو النحوية، فإنه لا يعتمد إنشاء شركات مخصصة في هذا الوقت.

نصائح أخرى

ولست متأكدا إذا كان هذا هو بالضبط ما تحتاجه ولكن يمكنك إنشاء وحدات الماكرو النحوية في بوو. هناك بعض المعلومات على الموقع CodeHaus، http://boo.codehaus.org/Syntactic+Macros ولكن لم يتغير بناء الجملة في واحدة من الإصدارات الأخيرة. أنا لا أعرف من أي دروس في بناء الجملة جديد ولكن الافراج عن مصدر بوو 0.8.2 لديه بعض الأمثلة (يتم تنفيذ بعض التراكيب اللغوية وحدات الماكرو). إذا كنت لا تريد لتحميل المصدر الكامل إطلالة على مستودع SVN متاح، <وأ href = "https://svn.codehaus.org/boo/boo/trunk/src/Boo.Lang.Extensions/Macros / "يختلط =" noreferrer نوفولو "> https://svn.codehaus.org/boo/boo/trunk/src/Boo.Lang.Extensions/Macros/ . سوف الماكرو ASSERT يكون مكان جيد للبدء.

وHTH

وStoo

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