تعریف تابع:
مجموعه ای از کدها در کنار هم، که محاسبه یا یک کار خاصی رو انجام میدن و در نهایت یک مقدار به عنوان خروجی بر می گردانند.
خب حالا به چه درد میخوره؟ از مهمترین مزایای تابع نویسی میتونیم به بالارفتن سرعت و خوانایی برنامه ، جلوگیری از اجرای کدهای تکراری و در نهایت داشتن کدنویسی تمیز اشاره کرد.
محدوده دسترسی:
تابع ها و متغییر ها دارای محدوده یا scope هستند .
محدوده یک متغییر یا تابع به شما می گوید که در کجای کد می توانید از آن استفاده کنید .
محدوده تمامی متغییرها و تابع هایی که در قسمت فرمول نویسی ستون و فیلتر بکار می برید فقط در بدنه همان قسمت قابل اجرا و دسترسی هستند
.یا بدین معنی که اگر متغییر یا تابعی در یک فرمول تعریف کنید فقط در همان قسمت قابل دسترسی هست .
درصورتی که نیاز به تابعی داشتید که بتوانید همه جا آن را فراخوانی کنید می توانید آن را در تابع های عمومی قسمت تعریف کنید.
تابع می تواند یک مقدار ثابت، یک عبارت محاسباتی و یا ویژگی از آبجکت های نماد پایه یا قرارداد را برگرداند .
ساختار و شکل تابع
function Name ( Parameter1 , Parameter2 , Parameter3 , ... ) {
// کدها و عملیاتی که می خواید روی پارامتر ها و فیلد ها اجرا بشن
return نتیجه;
}
مثال
function myFunction(a, b) {
return a * b; // خروجی ضرب عدد پارامتر اول در پارامتر دوم
}
//نحوه فراخوانی
myFunction(4, 3); // 12
مثال محاسبه سر به سری
function example1() {
return Option.TI.LastPrice + Option.Strike;
}
//نحوه فراخوانی
example1();
مثال ستون و فیلتر
می خوایم قراردایهایی که قیمت عرضه آنها اختلاف کمتر از 10% با قیمت منصفانه (بلک شولز) دارند
رو هم
بتونیم در ستون ها ببینیم و هم در فیلتر کنیم
//یک تابع عمومی تعریف میکنیم که مقدار اختلاف بلک شولز با قیمت عرضه رو به درصد برگردونه
function bsDiff (){
return CalcRateChange( Option.BlackSholesHV,Option.TI.Bid_1, 1);
}
//ستونی ایجاد میکنیم که این اختلاف رو نشون بده
bsDiff();
//فیلتری ایجاد میکنیم که اگر اختلاف کمتر از 10 بود شرط صحیح برگردونه
(bsDiff() >= -10 && bsDiff() <=10)
//تابع رو یکبار تعریف ، ولی 2 یا چند جای مختلف می تونیم از اون استفاده کنیم
مثال ستون و فیلتر
//محاسبه ارزش ذاتی قرارداد و استفاده از آن در ستون و فیلتر
//یک تابع عمومی تعریف میکنیم که ارزش ذاتی رو برگردونه
function intrinsictValue (){
let result = 0;
if (Option.Type == 'call') result = UA.TI.LastPrice - Option.Strike;
else result = Option.Strike - UA.TI.LastPrice;
if (result >0) return result;
else return 0;
}
فرمول ستونی که ارزش ذاتی رو نمایش بده
intrinsictValue();
فرمول فیلتری که فقط قراردادهایی با ارزش ذاتی بیشتر از صفر رو نمایش بده
intrinsictValue() > 0