سؤال

أنا أكتب ماكرو في Scala، ولكن عندما أسميه أحصل على رسالة خطأ تقول "Double لا يأخذ المعلمات".من الواضح أن هناك خطأ ما في كيفية بناء الماكرو لـ AST.فكيف يمكنني رؤية الماكرو الموسع؟هل هناك طريقة لاستدعاء تنفيذ الماكرو في وقت التشغيل؟

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

المحلول

يمد -Ymacro-debug-lite أو -Ymacro-debug-verbose الخيار للمترجم.

من أعلى رأسي، يتم التحكم في تفصيل ASTs المطبوعة -Yshow-trees-compact, -Yshow-trees-stringified, -Xprint-types, -uniqid و -Yshow-symkinds.يمكنك العثور على جواهر أخرى عن طريق الجري scala -X و scala -Y (أو فحص مصادر إعدادات سكالا في https://github.com/scala/scala/blob/2.10.x/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala).

أيضًا، على الرغم من كونه ماكروًا بشكل أساسي، فإن التشييء لديه آلية التتبع الخاصة به والتي يمكن تهيئتها -Yreify-copypaste و -Yreify-debug.

نصائح أخرى

هناك Macrocosm's Desugar والتي يمكن أن تظهر كيف يتم تحويل شفرة المصدر الخاصة بك، بما في ذلك، ولكن لا تقتصر على وحدات الماكرو، إلى. giveacodicetagpre.

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