برنتی / می‌نویسم که فکر کنم

آداپتور flip و reverse و spreadArgs

1401.02.15·Functional Programming

آداپتور flip

جای دو ورودی اول تابع مورد نظر را عوض می‌کند.

function flip(fn) {
	return function flipped(arg1,arg2,...args){
		return fn(arg2,arg1,...args);
	}
}

function f(...args) {
	return args;
}

let g = flip(f);

g(1,2,3,4);		// [2,1,3,4]

آداپتور reverse

ترتیب ورودی‌های تابع مورد نظر را برعکس می‌کند.

function reverseArgs(fn) {
	return function reversed(...args){
		return fn(...args.reverse());
	}
}

function f(...args) {
	return args;
}

let g = reverseArgs(f);

g(1,2,3,4);		// [4,3,2,1]

آداپتور spread

ورودی‌های تابع مورد نظر را تبدیل به یک لیست می‌کند.

function spreadArgs(fn) {
	return function spread(args){
		return fn(...args);
	}
}

function f(x,y,z,w) {
	return x + y + z + w;
}

let g = spreadArgs(f);

g([1,2,3,4]);		// 10

آداپتور 

ورودی‌های تابع مورد نظر را تبدیل به یک لیست می‌کند.

§ فهرست « Functional Programming »
  1. 1401.02.16تفاوت اجرای Lazy و Eagerمقایسه‌ی اجرای Lazy و Eager
  2. 1401.02.15مفهوم point-free و Equational Reasoning چیست؟
  3. 1401.02.15آداپتور flip و reverse و spreadArgs
  4. 1401.02.15آداپتورها
  5. 1401.02.15تابع unary و binary و ternary و n-ary چیست؟
  6. 1399.07.01برنامه‌نویسی فانکشنال در جاوااسکریپت - قسمت ۲"در این مطلب به شرح مفاهیم پایه برنامه نویسی فانکشنال بصورت خلاصه می‌پردازیم.
  7. 1399.06.18برنامه‌نویسی فانکشنال در جاوااسکریپت - قسمت ۱ Pure Functionsیک تابع Pure تابعی است که به ازای هر ورودی یکسان یک خروجی برگرداند و side effects یا اثرات جانبی هم نداشته باشد.