在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ js實(shí)現(xiàn)a(3)(4)(4)=48

js實(shí)現(xiàn)a(3)(4)(4)=48

js實(shí)現(xiàn)a(3)(4)(4) // print 48

回答
編輯回答
淡墨
Function Currying

Simple, Beautiful, Interesting

function curry(fn, ...args){
    return args.length === fn.length ? 
        fn(...args) : 
        (...next_args) => curry(fn, ...args, ...next_args); 
}

Next

function mul(a, b, c){
    return a * b * c; 
}
// mul(3, 4, 4); => 48 

let a = curry(mul); 

a(3)(4)(4); 
// => 48 

a(3, 4, 4); 
// => 48 

a(3)(4, 4); 
// => 48 

a()()()()()(3, 4)(4); 
// => 48 

S

clipboard.png

// 來晚了 ...

2017年12月23日 01:17
編輯回答
薔薇花
最簡單最完美實(shí)現(xiàn)
// es6
   const mul = (x) => {
    let sum = x
    let curried = (y) => {
        sum = sum * y
        return curried
    }
    curried.toString = () => sum
    return curried
   }
    console.log(mul(1)) //1
    console.log(mul(1)(2))//2
    console.log(mul(1)(2)(3))//6
    console.log(mul(1)(2)(3)(4))//24
    ...
    
   // es5
 function mul(x){
  var sum = x
  var curried = function(y){
    sum = sum * y
    return curried
  }
  curried.toString=function(){
    return sum 
  }
  return curried
}
    console.log(mul(1)) //1
    console.log(mul(1)(2))//2
    console.log(mul(1)(2)(3))//6
    console.log(mul(1)(2)(3)(4))//24
    ...
2017年5月24日 00:03
編輯回答
有點(diǎn)壞

函數(shù)柯里化 了解一下?

        // 固定參數(shù)實(shí)現(xiàn)
        const result = x => y => z => x * y * z;
        result(3)(4)(4) // 48;
        // 柯里化實(shí)現(xiàn)
        function curry(fn) {
            const len = fn.length;
            return function curried() {
                const args = Array.prototype.slice.call(arguments);
                if (args.length >= len) {
                    return fn.apply(this, args);
                }            
                return function () {
                    return curried.apply(this, args.concat(Array.prototype.slice.call(arguments)));
                };
            };
        }
        const result = curry(function (a, b, c) {
            return a * b * c;
        });
        result(3)(4)(4); // 48
2018年7月10日 08:11
編輯回答
還吻

固定3個(gè)參數(shù)的的柯里化。。。

const curry3 = fn=> a => b => c => fn(a,b,c);
const mutl3 = (a, b, c) => a * b * c;
const curried3 = curry3(mutl3);
let result = curried3(3)(4)(4);
console.log(result);

如果是更加通用的累乘,參數(shù)不定,就不能這么用了。

const curry = fn => {
    let _args = [];
    const _fn = (...args) => {
        _args.push(...args);
        return args.length >= 1 ? _fn : fn(..._args);
    }
    return _fn;
}
// 累乘
const multiplication = curry(function() {
    return Array.prototype.reduce.call(arguments, (acc, val) => {
        return acc * val;
    }, 1);
});
let result = multiplication(3)(4)(4)();
console.log(result);
2017年8月11日 00:07
編輯回答
怣痛

想深入了解問題本質(zhì),建議了解下 柯里化

2017年8月20日 01:39
編輯回答
愛礙唉

沒法實(shí)現(xiàn) 。 如果 a(3)(4)===12 那么 typeof(a(3)(4))必定是number 那么number必定不能像函數(shù)一樣調(diào)用

2017年5月11日 06:09
編輯回答
薄荷糖

這里有一個(gè)之前寫好的通用的currying函數(shù),傳入乘法運(yùn)算function即可:https://github.com/Jiasm/note...

2018年1月2日 12:12
編輯回答
萌吟

鏈?zhǔn)綀?zhí)行返回值必定為函數(shù)

2017年11月22日 14:09
編輯回答
尐懶貓
const a = () => () => () => 48
2018年4月5日 00:59
編輯回答
局外人
const a = x => Object.assign(
  y => a(x * y),
  {
    valueOf: () => x,
    toString: () => String(x),
  }
)

a(3)(4)(4) == 48         // ==> true
String(a(3)(4)(4))       // ==> "48"
console.log(a(3)(4)(4))  // ==> f 48
2018年2月3日 08:27