理解函数式编程

61 阅读2分钟

理解函数副作用:

函数副作用是指函数在正常工作任务之外对外部环境施加的影响。具体地说,函数副作用是指函数被调用,完成了函数既定的计算任务,但同时访问了外部数据,尤其是对外部数据进行了写操作,从而一定程度上改变了系统环境。

具体表现为:

  • 修改了全局变量的值
  • 修改了主调用函数中声明的变量的值(通过参数来进行修改)

缺点:

会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,降低程序的可读性!!!

理解纯函数: 一个函数的输出完全由它的输入决定

纯函数需要遵循以下规则:

  • 至少接收一个参数

  • 返回一个值或者其他函数

  • 返回的结果只依赖于输入的参数(函数耦合性小)

  • 不会产生副作用:

      - 将传入的参数当作不可变数据,即不修改传入的参数
      - 不修改全局变量!!
    

优点:

  • 可移植性

    - 返回的结果仅依赖于传入的参数,函数耦合性小
    
  • 可测试性

  • 可并发性

    - 不会产生副作用,相对于外界独立,因此纯函数可并发执行!!
    

理解函数式编程:

  • 函数就是,数据输入、数据输出的过程 ---- 分离数据与行为
  • 代码即数据 ---- 使用函数作为数据
  • 一路向下组合 ---- 组合简单的函数以形成更强大的函数

常用的 compose() 组合函数:

compose(...functions) 从右向左用来组合多个函数,即从最右的函数开始,把最右面的函数的返回值作为参数传入它左边的相邻的函数,这样依次进行。

compose(funcA , funcB , funcC) 相当于 compose(funcA(funcB(funC)))