Function composition

ترکیب توابع، فرایند ترکیب دویا چند تابع برای تولید تابعی جدید است.
این کار مانند این می ماند که چند لوله را از یک یا چند لوله برای ترکیب مواد داخل هم استفاده کنیم.

گاهی ممکن است در مصاحبه های کاری برنامه نویسی یا یه همچین جاهایی از شما راجب composition سوالاتی بپرسن، یا حتی زمان کد نویسی نیاز به الگویی برای طراحی راحتر ( یا شایدم جاگیزین :) ) ارث بری داشته باشید.
اگه همینطوره، این مقاله برای شماست.

اول بیاین با هم دو تابع رو ' f ' و ' g ' رو ترکیب کنیم:‌

` f(g(x)) `

که میدونیم به ترتیب: اول x بعد g و بعدش f محاسبه میشه.

مثال زیر را به زبان جاوااسکریپت نگاه کنید:‌

function swimmer({ name }) {
  return {
    swim: () => console.log(`${name} swam`)
  }
}
function swimmerPersonCreator(name) {
  const person = { name }
  return {
    ...person,
    ...swimmer(person)
  }
}
const person = swimmingPersonCreator(&quotAli&quot)
person.swim()

به سادگی میتونیم متوجه بشیم که برای قابلیت های دیگه هم میتونیم توابع دیگری اضافه کنیم.
مثلا میتونیم تابع runner به معنای دونده رو دقیقا مثل تابع swimmer بسازیم و تابعی برای سازنده ی اون.
همچنین امکان استفاده مجدد از توابع برای سازنده های دیگر هم وجود دارد و این نقطه قوت Function composition هستش.

  • فقط یادمون باشه زمان نوشتن توابع اونها باید به صورت خام مورد استفاده قرار بگیرن ( تمامی ورودی ها باید فقط توسط تابع اصلی قابل تغییر باشد ).



اگر مثل من به Functional Programming در جاوااسکریپت علاقه مند هستید، پیشنهاد میکنم راجب به ابزار هایی مثل loadash و mori اطلاعات بیشتری کسب کنید. ( شایدم یه مقاله راجبش نوشتم :×) )