美文网首页
函数组合应用 笔记

函数组合应用 笔记

作者: wudimingwo | 来源:发表于2018-12-22 22:57 被阅读0次

函数式编程的一部分内容

简单例子,先感受一下, 从右向左依次执行

// 返回一个函数, 执行顺序为从右向左, 第一个函数返回的结果为,下一个函数的参数
          function compose (f, g) {
            return function (data) {
                return f(g(data))
            }
          }
          
          function toUpperCase (str) {
            return str.toUpperCase();
          }
          
          function add (str) {
            return str + "!"
          }
          
          let f = compose(toUpperCase,add);
          console.log(f("time"));
          
          

兼容一般情况的封装

          function compose () {
            var args = [].slice.call(arguments);
            var len = args.length - 1;
            return function (data) {
                var result = args[len](data);
                while (len--){
                    result = args[len](result);
                }
                return result
            }
          }

测试

          function toUpperCase (str) {
            return str.toUpperCase();
          }
          
          function add (str) {
            return str + "!"
          }
          
          function split (str) {
            return str.split("");
          }
          
          function reverse (arr) {
            return arr.reverse();
          }
          
          function join (arr) {
            return arr.join("=");
          }
          
          let f = compose(join,reverse,split,toUpperCase,add);
          console.log(f("time"));/!=E=M=I=T

用reduceright优化

          function compose () {
            var args = [].slice.call(arguments);
            return function (data) {
             return args.reduceRight(function (res, cb) {
                    return cb(res);
                },data)
            }
          }

用es6优化

const compos1e = (...args) => (data) => args.reduceRight((res,cb) => cb(res), data);

也可以改变方向, 从左向右传递,执行,
不过一般称为管道, pipe

const pipe = (...args) => (data) => args.reduce((res,cb) => cb(res), data);

相关文章

  • 函数组合应用 笔记

    函数式编程的一部分内容 简单例子,先感受一下, 从右向左依次执行 兼容一般情况的封装 测试 用reducerigh...

  • 生命周期和附带效应

    可组合函数应该是无副作用的,但是当需要改变应用的状态时, 可组合函数需要从受控的环境调用,这个环境能够感知可组合函...

  • Clojure 学习笔记 :11 函数组合

    Clojure 零基础 学习笔记 偏函数 串行宏 高阶函数 闭包 函数组合 --- 简单而又有力的武器 在函数式编...

  • Redux源码阅读_2

    compose.ts 从右到左来组合多个函数,是reduce函数的一个应用实现。 首先仍然是重载了多个参数的函数声...

  • Index函数和match函数组合应用

    在excel中,除了vlookup函数常用来查找引用外,index函数和match函数组合也可用来做查找引用工作,...

  • 【MATCH函数】和【OFFSET函数】的组合应用

    在实际工作中,很多时候我们是希望在一张数据表上依据关键字来动态查询或统计相关的数据。这种情况下,使用MATCH函数...

  • 函数式编程(四)——函数组合

    目录 函数组合背景知识管道Lodash中的组合函数 —— flow()/flowRight()函数组合原理模拟函数...

  • 关于webpack loader的加载顺序

    函数组合 先介绍一个概念,函数组合:函数组合是函数式编程中非常重要的思想,它的实现的思路也没有特别复杂。 函数组合...

  • compose

    函数组合 先介绍一个概念,函数组合:函数组合是函数式编程中非常重要的思想,它的实现的思路也没有特别复杂。 函数组合...

  • Python3.5笔记——第7章 函数

    Python3.5笔记 第7章 函数 调用函数 函数是指用于进行某种计算的一些列语句的有名称的组合。Python3...

网友评论

      本文标题:函数组合应用 笔记

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