美文网首页
简述函数式编程

简述函数式编程

作者: 一个名字G | 来源:发表于2020-02-12 16:30 被阅读0次
  • 函数式编程思维
  • 函数式编程常用的核心概念

概念:
1、函数是一等公民。所谓“一等公民”,指的是函数与其他数据类型一样,处于平等地位,可以复制给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。

2、不可改变量。在函数式编程中,我们通常理解的变量在函数式编程中也被函数代替了:在函数式编程中变量仅仅代表某个表达式。这里说的‘变量’是不能被小改的。所有的变量只能被赋值一次初值

3、map & reduce 他们是最常用的函数式编程

特性:

  • 函数是 “一等公民”
  • 只用 “表达式”,不用 “语句”
  • 没有 “副作用”
  • 不修改状态
  • 引用透明(函数运行只靠参数)

函数式编程常用的核心概念

1、纯函数

  • 对于相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用,也不依赖外部环境的状态
    例:Array.slice() 就是纯函数,对于固定的输入,输出总是固定的,Array.splice() 就不是一个纯函数,对于引用对象来说改变本身

2、函数的柯里化

事实上柯里化是一种“预加载”函数的方法,通过传递较少的参数,得到一个已经记住了这些参数的新函数,某种意义上讲,这是一种对参数的 “缓存” ,是一种非常高效的编写函数的方法
例如:

let checkage = function(min) {
    return function (age) {
      return age > min;
    }
}

3、函数组合

对于函数柯里化拆分后的函数,调用时会出现 “洋葱式” 代码,这个时候需要函数组合

4、Point Free

把一下对象自带的方法转化成纯函数,不要命名转瞬即逝的中间变量

这个函数中,我们使用了 str 作为我们的中间变量,但这个中间变量除了让代码变得长了一点以外没有任何意义
例:const f = str => str.toUpperCase().split('')

5、声明式与命令式代码

命令式代码的意思就是,我们通过便写一条又一条的指令去让计算机执行一些动作,这其中一半都会涉及到很多繁杂的细节。而声明式就要优雅很多,我们通过写表达式的方法来声明我们想干什么,而不是通过一步一步的指示。

// 命令式
let CEOs = [];
for(let i = 0,i < companies.length;i++) {
  CEOs.push(compaies[i].CEO)
}
// 声明式
let CEOs = companise.map(c => c.CEO);

6、惰性求值

函数式编程的优缺点

函数式编程的一个明显的好处就是这种声明式的代码,对于无副作用的纯函数,我们完全可以不考虑函数内部式如何实现的,专注于编写业务代码。优化代码时,目光只需要集中在这些稳定兼顾的函数内部即可。

相反,不纯的函数式代码会产生一些副作用或者依赖于外部的一些环境变量,使用他们的时候总要考虑这些不干净的副作用。在复杂的系统中,这对于程序员的心智来说是极大的负担。

相关文章

  • 简述函数式编程

    函数式编程思维 函数式编程常用的核心概念 概念:1、函数是一等公民。所谓“一等公民”,指的是函数与其他数据类型一样...

  • Python题目

    简述函数式编程在函数式编程中,函数是基本单位,变量只是一个名称,而不是一个存储单元。除了匿名函数外,Python还...

  • Python求职之路

    1简述函数式编程 在函数式编程中,函数是基本单位,变量只是一个名称,而不是一个存储单元。除了匿名函数外,Pytho...

  • iOS 具有函数式编程和响应式编程的Reactivecocoa(

    简述 如今提起Reactivecocoa(RAC), 具有函数式编程和响应式编程的特性。相信大多数的iOS 开发者...

  • 重点汇总-python常见问题1

    1. 简述函数式编程 解释一: 在函数式编程中,函数是基本单位,变量只是一个名称,而不是一个存储单元。除了匿名函...

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

  • 前端:函数式编程简述

    函数式编程是什么? 在函数式编程中,函数就是一个管道(pipe)。这头进去一个值,那头就会出来一个新的值,没有其他...

  • 函数式编程(一)—— 前置知识

    为什么要学函数式编程? 什么是函数式编程?函数式编程和面向对象编程的不同对于函数式编程思维方式的理解: 函数式编程...

  • 二十二、函数式编程、面向协议式编程

    函数式编程(Functional Prigramming) 函数式编程 函数式编程(Functional Prig...

网友评论

      本文标题:简述函数式编程

      本文链接:https://www.haomeiwen.com/subject/wbwfoctx.html