آداپتور 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
آداپتور
ورودیهای تابع مورد نظر را تبدیل به یک لیست میکند.