آشنایی با Currying در جاوااسریپت
Currying یا کِری کردن (در زبان فارسی گاهی به "آرایش کردن توابع" هم ترجمه میشود) یک تکنیک در برنامهنویسی تابعی است که به توابع اجازه میدهد تا چندین آرگومان را به صورت جداگانه و در چند مرحله دریافت کنند.
به طور ساده، زمانی که یک تابع با چندین آرگومان داریم، با استفاده از Currying میتوانیم این تابع را طوری تغییر دهیم که هر بار فقط یک آرگومان را بگیرد و یک تابع جدید برگرداند که منتظر آرگومان بعدی است. این روند تا زمانی ادامه دارد که تابع همه آرگومانهای مورد نیاز خود را دریافت کند.
مثال ساده در جاوااسکریپت:
function sum(a) {
return function(b) {
return a + b;
};
}
const addFive = sum(5);
console.log(addFive(3)); // خروجی: 8
در این مثال، تابع sum یک عدد (a) میگیرد و تابع دیگری برمیگرداند که عدد دوم (b) را دریافت کرده و جمع آنها را محاسبه میکند.
میتوان این تابع را به صورت زیر هم استفاده کرد:
console.log(sum(5)(3)); // خروجی: 8
کاربردهای Currying:
- بازاستفادهی آسان: توابع کوچکتر و قابل استفاده مجدد میسازد. برای مثال، میتوانید یک تابع بسازید که با پارامترهای از پیش تعیینشده فراخوانی شود.
- تنظیمات جزئی: وقتی لازم است یک تابع با تعدادی پارامتر اولیه اجرا شود و بعداً پارامترهای دیگر اضافه شود، Currying مفید است.
تبدیل یک تابع به Curry:
در جاوااسکریپت مدرن، میتوان از arrow functions برای نوشتن توابع به صورت کوتاهتر استفاده کرد:
const multiply = a => b => a * b;console.log(multiply(2)(3)); // خروجی: 6
استفاده در کتابخانهها:
Currying در بسیاری از کتابخانههای جاوااسکریپت، مثل Lodash و Ramda، به کار میرود و برنامهنویسی تابعی را تسهیل میکند.