函数式编程-Functor篇

在这里插入图片描述

简介
在之前的文章中已经介绍过函数式编程了,但是没有演示在函数式编程中如何把副作用控制在可控的
范围内、如异常处理、异步操作等,接下来为大家揭晓谜题
什么是Functor(函子)
容器:包含值和值的变形关系(这个变形关系就是函数)
函子:是一个特殊的容器,通过一个普通的对象来实现,该对象有map方法,
map方法可以运行一个函数对值进行处理(变形关系)

演示如下

class Container {
    constructor(value) {
        this._value = value
    }
    map(fn) {
        return new Container(fn(this._value))
    }
}
const result1 = new Container(5).map(data => data + 5).map(data => {
    console.log(data); //10
    return data
});

console.log(result1); //Container { _value: 10 }

class Container2 {
    static of(value) {
        return new Container2(value)
    }
    constructor(value) {
        this._value = value
    }
    map(fn) {
        return Container2.of(fn(this._value))
    }
}
const result2 = Container2.of(20).map(data => data + 20).map(data => {
    console.log(data); //40
    return data
})
console.log(result2); //Container2 { _value: 40 }
总结
1、函数式编程不直接操作值,而是由函子完成
2、函子就是一个实现了map契约的对象
3、我们可以把函子想象成一个盒子,这个盒子封装了一个值,
4、想要处理盒子中的值,我们需要给盒子的map方法传递一个处理值的函数(纯函数),由这个函数来对值进行处理
5、最终map方法返回一个包含新值的盒子(函子)

谢谢观看!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值