丁鹿学堂:函数式编程浅析之compose函数

函数式编程的compose

函数式编程就像搭积木,通过不同的函数组合实现复杂的功能。
但是在实现过程中传值和连续调用不方便也不优雅,所以可以借助compose函数。
composet函数可以方便的连续执行方法,它把传值和调用的过程进行了封装,我们只需要传递给compose函数我们要执行的方法,它会自动帮我们执行。
简单的说,他就是辅助我们去连续执行函数的一个功能函数。

自己封装一个compose

compose的参数应该是函数,先执行的函数参数放到后面,也就是compose函数从右向左执行传入的参数(参数是一个一个的函数)。
因为传入的参数是不确定的,所以函数内部使用argumens去获取所有的不定参。
每次执行以后,第一次调用的结果,就是下一次函数的参数。
compose的返回值是一个函数,这个函数说白了就是参数函数调用的组合结果。
代码:

function compose(){
  const args = [].slice.apply(arguments) // 把类数组arguments变成数组
  return function(data){
    let _result = data
    for(let i = args.length -1 ;i>=0;i--){
      _result = args[i](_result)
    }
    return _result
  }
}

需求:
让一个整数,先加一,再乘2。
这是一个很简单的需求,我们主要看怎么通过函数式编程的形式去实现这个需求。
简单的例子更容易看清楚本质的内核。

function addNum(num){
  return ++num 
}
function multiply(num){
  return num *2
}

let result = compose(multiply,addNum)(2)
console.log(result)

可以看到,通过封装的compose函数,我们只需要传入要执行的步骤函数,调用的时候传入参数,就可以很优雅的实现需求、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 3 支持函数式编程的特性,这意味着你可以在 Vue 组件中使用一些函数式编程的概念和技术。下面是一些与函数式编程相关的特性和用法: 1. 纯函数函数式编程鼓励使用纯函数,这意味着函数的输出只依赖于输入,不会对外部环境产生副作用。在 Vue 组件中,你可以将计算属性、过滤器和方法尽量设计成纯函数,以便更好地进行单元测试和调试。 2. 函数组合:Vue 3 提供了 `compose` 函数,它可以将多个函数组合起来,形成一个新的函数。你可以使用 `compose` 来简化复杂的逻辑处理,提高代码的可读性和可维护性。 3. 高阶组件 (Higher-Order Components):在 Vue 3 中,你可以使用函数式组件 (Functional Components) 来定义高阶组件。函数式组件是一种纯函数,接收一个 props 对象作为参数,并返回一个 VNode。通过使用函数式组件,你可以轻松地将一些常见的逻辑和功能封装成可复用的高阶组件。 4. 不可变数据:函数式编程鼓励使用不可变的数据结构,这意味着数据一旦创建就不能被修改。在 Vue 3 中,你可以使用 `ref` 和 `reactive` 来创建响应式的数据,但是不能直接修改它们的值。如果需要修改数据,应该通过使用特定的方法或函数来产生新的数据。 5. 组件复用:函数式编程鼓励组件的复用性,你可以将一些通用的功能封装成可复用的函数或组件,并在不同的地方进行使用。Vue 3 中的函数式组件和高阶组件是实现组件复用的一种方式。 这些是 Vue 3 中支持函数式编程的一些特性和用法,希望对你有所帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丁鹿学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值