Security Researcher | Full Stack Developer
استفاده از Currying در JavaScript
امروز سر یه Merge request صحبت از Currying شد که البته روش خیلی سادهایه ولی چون برای بعضی از بچه ها جالب بود گفتم این جا هم بذارمش شاید برای کسی مفید باشه.
خلاصه میگم که وقتتون رو نگیرم...
(تو همه زبان ها میشه از Currying استفاده کرد ولی مثال ها رو با JavaScript آماده کردم )
تو سادهترین حالت برای Function composition از این روش استفاده میکنیم:
![](https://files.virgool.io/upload/users/20360/posts/efri10b7qmcd/poygadhxkww9.png)
ولی بعضی وقتا مثل همین حالت بالا، تعداد پرانتزها زیاد و باعث نامرتب شدن کدها میشه...
برای حل این مشکل معمولا میایم از Higher-order Functions ها استفاده میکنیم که بتونیم توابعی که داریم رو ترکیب کنیم و یا اگه پروژه Js ای هست میتونیم از Lodash استفاده کنیم که میشه اینطوری:
![](https://files.virgool.io/upload/users/20360/posts/efri10b7qmcd/hswgr9xi7hw8.png)
مشکل زمانی پیش میاد که توابعی داریم که بیشتر از یک آرگومان دارن، مثلا:
![](https://files.virgool.io/upload/users/20360/posts/efri10b7qmcd/bstis3qnwq6p.png)
اینجا چند تا موضوع پیش میاد:
- ورودی pipe حتما باید یک تابع رو return کنه (نمیتونیم از call شدهی تابع استفاده کنیم)
- موقعی که از pipe استفاده میکنیم خروجی تابع سمت چپ به عنوان ورودی تابع سمت راست داده میشه.
پس با دونستن این 2 مورد میتونیم این مشکل رو با استفاده از Currying حل کنیم، که میشه اینطوری:
![](https://files.virgool.io/upload/users/20360/posts/efri10b7qmcd/2na6zbfalbvx.png)
اگه کنجکاوین با Currying بیشتر آشنا بشین این دو تا لینک میتونه کمک کنه:
![Currying (post's cover image)](https://files.virgool.io/upload/users/20360/posts/efri10b7qmcd/zledkaptsmer.png)
مطلبی دیگر از این انتشارات
رادیو متروک - قسمت #31: درآمد، استقلال مالی و حسابداری شخصی
مطلبی دیگر از این انتشارات
تابع fetch در JavaScript
مطلبی دیگر از این انتشارات
چرا React SEO Friendly ممکن است و چرا باید از آن برای پروژه های نیازمند به SEO خود استفاده کنید؟