抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

今天无聊看到阮一峰老师15年写的一篇文章,有点想法,记录一下。

图解 Monad - 阮一峰的网络日志 (ruanyifeng.com)

阮老师讲了半天,照我的理解是有个能处理函数类型+函数类型的函数,那我就造一个,貌似没啥用,写着玩

实现

先写俩函数,一会就把他们混合起来

function say() {
    console.log('I can say!')
    return 1
}

function other() {
    console.log('I can fly!')
}

混合器实现

function fnMixer(...Fn: Function[]) {
    return function () {
        return Fn.map(f => f());
    }
}
const mixFn = fnMixer(say, other)
const ret = mixFn()
console.log(ret);
// output:
/*
I can say!
I can fly!
[ 1, undefined ]
*/

现在看来函数返回值处理的有问题,返回值不知道是哪个函数的,分类一下。

function fnMixer(...Fn: Function[]) {
    return () => {
        return Fn.map(f => ({
            name: f.name,
            result: f()
        }));
    }
}
const mixFn = fnMixer(say, other)
const ret = mixFn()
console.log(ret); 
// [ { name: 'say', result: 1 }, { name: 'other', result: undefined } ]

评论