نوشتن اسکریپت راهحل
هدف
یک تکه منطق را یکبار بنویسید — «آیا این هزینه از سقف تأیید بیشتر است»، «این ارجاع را آنگونه که این مشتری مینویسد قالببندی کن» — و از هر قانون کسبوکار و فرمانی که به آن نیاز دارد صدایش بزنید، بهجای اینکه همان چند سطر را در هر کدام بچسبانید.
پیشنیازها
- بهعنوان سازنده وارد شدهاید و یک راهحل و یک محیط انتخاب کردهاید.
گامها
-
راهحل خود را باز کنید و اسکریپتها را انتخاب کنید.
-
تازه را بزنید. طراح با یک نمونهٔ کوچک باز میشود.
-
یک نام نمایشی بدهید. مسیر ماژول همزمان با تایپ شما پر میشود — همان نامی است که اسکریپتهای دیگر وارد میکنند، و پس از ذخیره تغییرپذیر نیست.
-
کمکی خود را بنویسید و آن را 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';
همین import در اسکریپت یک فرمان هم کار میکند. اسکریپت به راهحل تعلق دارد نه به یک جدول، پس قانونی روی «فاکتور» میتواند کمکیای را که برای «هزینه» نوشته شده صدا بزند.
export اختیاری نیست
یک اسکریپت تنها آنچه را صادر کند در اختیار میگذارد. کمکیای که صادر کردنش را فراموش کنید برای هر چیزی که اسکریپت را وارد میکند نامرئی است — به همین دلیل طراح از ذخیرهٔ اسکریپتی که چیزی صادر نمیکند خودداری میکند و همین را میگوید. این خودداری عمدی است: بدون آن، اسکریپت با خوشحالی ذخیره میشد و خطا جای دیگری سر برمیآورد — بهصورت «تابع پیدا نشد» درون قانونی که شما به آن نگاه نمیکردید.
میتوانید چند نام را از یک اسکریپت صادر کنید:
export isOverLimit, formatReference;
چه چیزی سفر میکند، و اگر نکند چه میشود
اسکریپت یک جزء راهحل است. همراه راهحلش صادر میشود و پیش از قانونهایی که آن را وارد میکنند نصب میگردد، پس بسته همیشه به ترتیبی کارآمد میرسد.
اگر قانونی اسکریپتی را وارد کند که محیط ندارد — چون حذف شده، یا چون راهحلی که آن را میآورد وارد نشده — قانون با نام شکست میخورد، هم در ویرایشگر هنگام نوشتن و هم در زمان اجرا. هیچ چیز بیصدا شکست نمیخورد.
عیبیابی
«اسکریپت … چیزی صادر نمیکند.» یک سطر export بیفزایید که نام توابع اشتراکی را میبرد.
«اسکریپت BS Lang نامعتبر است: سطر …» کد تجزیه نمیشود. ویرایشگر زیر مشکل خط میکشد و فهرست مشکلات زیر آن هر کدام را نام میبرد؛ روی یک ردیف بزنید تا به همان سطر بروید.
قانون میگوید تابع من پیدا نشد. سه چیز را به ترتیب بررسی کنید: قانون سطر import را دارد؛
مسیر ماژول در آن دقیقاً با اسکریپت میخواند؛ و اسکریپت آن تابع را با همان نام صادر میکند. پنل
اسکریپتهای راهحل دو مورد نخست را برای شما مینویسد. یک بررسی سریع برای هر سه: در یک سطر خالی
از قانون Ctrl+Space را بزنید. تکمیل خودکار هر تابعی را که import آورده فهرست میکند، پس تابعی
که در فهرست نیست تابعی است که قانون نمیتواند صدا بزند.
پنل خالی است ولی میدانم اسکریپت هست. فهرست، فهرست محیط است؛ اسکریپتی که در زبانهٔ دیگری ذخیره شده پس از باز کردن دوبارهٔ قانون دیده میشود.
نمیتوانم نام اسکریپت را عوض کنم. درست است — مسیر ماژول همان چیزی است که هر قانون واردکننده نام میبرد، پس تغییرش همهٔ آنها را یکجا و بیصدا میشکست. نسخهٔ تازه را بسازید و قدیمی را بازنشسته کنید.