كتابة نص برمجي للحل
الهدف
أن تكتب قطعة منطق مرة واحدة — «هل تجاوزت هذه النفقة حدّ الاعتماد؟»، «نسّق المرجع بالطريقة التي يكتبها بها هذا العميل» — ثم تستدعيها من كل قاعدة عمل وكل أمر يحتاجها، بدل لصق السطور نفسها في كل واحد منها.
المتطلبات المسبقة
- أنت مسجّل الدخول كصانع، ولديك حل وبيئة مختاران.
الخطوات
-
افتح حلّك واختر النصوص البرمجية.
-
اختر جديد. يُفتح المصمّم وفيه مثال صغير جاهز.
-
امنحه اسم عرض. يُملأ مسار الوحدة تلقائيًا وأنت تكتب — وهو الاسم الذي ستستورده النصوص الأخرى، ولا يمكن تغييره بعد الحفظ.
-
اكتب مساعِدك ثم صدّره بـ
export:func isOverLimit(amount: int, limit: int): bool {return amount > limit;}export isOverLimit; -
اختر حفظ.
أسفل حقل الاسم يعرض المصمّم السطر الذي تنسخه بالضبط:
import 'par_expense_helpers';
استدعاؤه من قاعدة عمل
لست مضطرًا لتذكّر مسار الوحدة. في مصمّم قاعدة العمل افتح لوحة نصوص الحل البرمجية على الجانب: تسرد كل نص برمجي في هذه البيئة، ويكتب زر استيراد السطر في أعلى قاعدتك. والنص الذي تستورده القاعدة أصلًا يظهر بوسم «مستورَد» بدل عرضه مرة ثانية.
وإن لم تكن في البيئة نصوص بعد، تقول اللوحة ذلك وتعرض نص برمجي جديد، فيفتح المصمّم في تبويب جديد — وتبقى قاعدتك غير المحفوظة كما هي.
والسطر الذي تكتبه هو نفسه ما كنت ستكتبه بيدك. فيصبح كل ما صدّره النص متاحًا كأنك كتبته هناك:
import 'par_expense_helpers';
setVisible('par_approval', isOverLimit(getValue('par_amount'), 100));
ويمكنك استيراد اسم واحد فقط إن فضّلت التصريح بما تستخدمه:
import isOverLimit from 'par_expense_helpers';
ويعمل الاستيراد نفسه في نص أمر. فالنص يخص الحل لا الجدول، ولذلك تستطيع قاعدة على «الفاتورة» أن تستدعي مساعِدًا كُتب من أجل «النفقة».
export ليس اختياريًا
النص البرمجي لا يتيح إلا ما يصدّره. والمساعِد الذي تنسى تصديره يبقى غير مرئي لكل ما يستورد النص — ولهذا يرفض المصمّم حفظ نص لا يصدّر شيئًا، ويقول ذلك. والرفض مقصود: بدونه كان النص سيُحفظ بسلام، ويظهر العطب في مكان آخر تمامًا، على هيئة «الدالة غير موجودة» داخل قاعدة لم تكن تنظر إليها.
ويمكنك تصدير أكثر من اسم من نص واحد:
export isOverLimit, formatReference;
ما الذي ينتقل، وماذا يحدث إن لم ينتقل
النص البرمجي مكوّن من مكوّنات الحل. يُصدَّر مع حلّه ويُنصَّب قبل القواعد التي تستورده، فتصل الحزمة دائمًا بترتيب صالح للعمل.
وإن استوردت قاعدةٌ نصًا لا تملكه البيئة — لأنه حُذف، أو لأن الحل الذي يوفّره لم يُستورد — فشلت القاعدة بالاسم، في المحرّر أثناء الكتابة وفي وقت التشغيل معًا. ولا شيء يفشل بصمت.
معالجة المشكلات
«النص … لا يصدّر شيئًا.» أضف سطر export يسمّي الدوال التي تريد مشاركتها.
«نص BS Lang غير صالح: السطر …» الكود لا يُحلَّل. يضع المحرّر خطًا تحت الموضع، وتسمّي قائمة المشكلات أسفله كل واحدة؛ اختر صفًا لتقفز إلى سطره.
تقول القاعدة إن دالتي غير موجودة. تحقق من ثلاثة أمور بالترتيب: أن القاعدة فيها سطر
import؛ وأن مسار الوحدة فيه مطابق تمامًا لمسار النص؛ وأن النص يصدّر تلك الدالة بالاسم نفسه.
ولوحة نصوص الحل البرمجية تكتب لك أول اثنين. وللتحقق من الثلاثة معًا: اضغط Ctrl+Space في سطر
فارغ من القاعدة. يسرد الإكمال التلقائي كل دالة جلبها import، فالدالة الغائبة عن القائمة دالة لا
تستطيع القاعدة استدعاءها.
اللوحة فارغة مع أنني أعرف أن هناك نصوصًا. القائمة قائمة البيئة، فالنص المحفوظ في تبويب آخر يظهر بعد إعادة فتح القاعدة.
لا أستطيع إعادة تسمية نص برمجي. صحيح — فمسار الوحدة هو ما تسمّيه كل قاعدة مستورِدة، وتغييره كان سيكسرها جميعًا دفعة واحدة وبصمت. أنشئ الجديد وأحِل القديم على التقاعد.