به نام خدا با عرض سلام و احترام خدمت شما دوستان عزیز. در ادامه آموزش جاوا اسکریت این جلسه قصد داریم به مبحث توابع pure یا توابع خالص در جاوا اسکریپت بپردازیم.با ما همراه باشید.
تابع pure تابعی است که:
- با توجه به ورودی یکسان، همیشه همان خروجی را برمی گرداند.
- هیچ ساید افکتی ایجاد نمی کند.
قبل از اینکه بتوانیم به چیستی یک تابع pure بپردازیم، احتمالاً ایده خوبی است که نگاهی دقیق تر به توابع داشته باشیم. ممکن است راه متفاوتی برای نگاه کردن به آنها وجود داشته باشد که درک عملکرد را آسان تر کند.
تابع چیست؟
تابع فرآیندی است که مقداری ورودی به نام آرگومان می گیرد و خروجی ای به نام مقدار بازگشتی تولید می کند. توابع ممکن است اهداف زیر را انجام دهند:
Mapping: بر اساس ورودی های داده شده مقداری خروجی تولید کند. یک تابع مقادیر ورودی را به مقادیر خروجی نگاشت می کند.
Procedures: ممکن است یک تابع برای انجام یک سری مراحل فراخوانی شود. دنباله به عنوان یک رویه شناخته می شود. و برنامه نویسی در این سبک به عنوان برنامه نویسی رویه ای شناخته می شود.
I/O: برخی از توابع برای برقراری ارتباط با سایر بخشهای سیستم مانند صفحه نمایش، ذخیرهسازی، گزارشهای سیستم یا شبکه وجود دارند.
Mapping
توابع آرگومان های ورودی را به مقادیر برمی گرداند، به این معنی که برای هر مجموعه از ورودی ها، یک خروجی وجود دارد. یک تابع ورودی ها را می گیرد و خروجی مربوطه را برمی گرداند.
“()Math.max” اعداد را به عنوان آرگومان می گیرد و بزرگترین عدد را برمی گرداند:
1 |
Math.max(2, 8, 5); // 8 |
در این مثال، 2، 8، و 5 آرگومان هستند. آنها مقادیری هستند که به تابع منتقل می شوند.
‘()Math.max` تابعی است که هر تعداد آرگومان را می گیرد و بزرگترین مقدار آرگومان را برمی گرداند. در این مورد، بیشترین عددی که ما از آن عبور کردیم 8 بود و این عددی است که برگردانده شد.
توابع در محاسبات و ریاضیات بسیار مهم هستند. آنها به ما کمک می کنند تا داده ها را به روش های مفید پردازش کنیم. برنامه نویسان خوب به توابع نام های توصیفی می دهند تا وقتی کد را می بینیم، بتوانیم نام توابع را ببینیم و بفهمیم که تابع چه می کند.
ریاضی نیز توابعی دارد و آنها بسیار شبیه به توابع جاوا اسکریپت کار می کنند. احتمالاً توابعی را در جبر دیده اید. آنها چیزی شبیه به این هستند:
f(x) = 2x
این بدان معناست که ما تابعی به نام f را اعلام می کنیم و آرگومانی به نام x می گیرد و x را در 2 ضرب می کند.
برای استفاده از این تابع، به سادگی یک مقدار برای x ارائه می کنیم:
f(2)
در جبر، این دقیقاً به معنای نوشتن است:
4
بنابراین هر جایی که f(2) را می بینید می توانید 4 را جایگزین کنید.
حالا بیایید آن تابع را به جاوا اسکریپت تبدیل کنیم:
1 |
const double = x => x * 2; |
میتوانید خروجی تابع را با استفاده از «()console.log» بررسی کنید:
1 |
console.log( double(5) ); // 10 |
یادتان هست وقتی گفتم در توابع ریاضی، میتوانید «f(2)» را با «4» جایگزین کنید؟ در این مورد، موتور جاوا اسکریپت «double(5)» را با پاسخ «10» جایگزین میکند.
Pure Functions
تابع خالص تابعی است که:
- با توجه به ورودی یکسان، همیشه همان خروجی را برمی گرداند.
- هیچ ساید افکتی ایجاد نمی کند.
بنابراین، «;console.log( double(5))» همان «;console.log(10)» است.
این درست است زیرا «()double» یک تابع pure است، اما اگر «()double» ساید افکت داشت، مانند ذخیره مقدار در دیسک یا ورود به کنسول، نمیتوانید به سادگی «double(5)» با 10 را جایگزین کنید.
توصیه می کنم از توابع خالص استفاده کنید. به این معنی که اگر اجرای یک برنامه مورد نیاز با استفاده از توابع pure عملی است، باید از آن ها نسبت به گزینه های دیگر استفاده کنید. توابع pure مقداری ورودی می گیرند و بر اساس آن ورودی مقداری خروجی برمی گرداند. آنها ساده ترین بلوک های سازنده کد قابل استفاده مجدد در یک برنامه هستند. شاید مهم ترین اصل طراحی در علوم کامپیوتر KISS (Keep It Simple, Stupid) باشد. من Keep It Stupid Simple را ترجیح می دهم.
توابع pure دارای خواص مفید بسیاری هستند و اساس برنامه نویسی عملکردی را تشکیل می دهند. توابع pure کاملاً مستقل از حالت بیرونی هستند و به این ترتیب، در برابر کل کلاسها باگهایی که با وضعیت تغییرپذیر مشترک مرتبط هستند مصون هستند. ماهیت مستقل آنها همچنین آنها را به کاندیدای عالی برای پردازش موازی در بسیاری از CPUها و در کل خوشه های محاسباتی توزیع شده تبدیل می کند، که آنها را برای بسیاری از انواع کارهای محاسباتی علمی و منابع فشرده ضروری می کند.
توابع pure نیز بسیار مستقل هستند – جابجایی، اصلاح و سازماندهی مجدد در کد شما آسان است و برنامه های شما را انعطاف پذیرتر و سازگارتر با تغییرات آینده می کند.
سایر مقالات:
دیدگاهتان را بنویسید