zoukankan      html  css  js  c++  java
  • reduce要素与适用总结

    要素:

    1、高阶函数:reduce;

    2、处理函数:reducer;

    3、数据:可以是具体数据、签名相同的普通函数、签名相同的高阶函数;

    reduce(reducer, datas(data or funciton), initResult(optional))

    一、平凡数据处理

    1 In [5]: reduce(add, [1,2,3,4,5])   

    2 Out[5]: 15 

    1 In [6]: reduce(add, [1,2,3,4,5], 10)   

    2 Out[6]: 25 

    二、函数组作为数据、计算串联、函数输入与返回单一类型兼容;缩减结果为普通数值;

    reducer:(result, fn) => fn(result)

    function compose(...funcs) {

      return result => [...funcs]

        .reverse()

        .reduce((result, fn) => fn(result), result);

    }

    三、函数组作为数据、计算串联组合,缩减的结果任然是一个函数;函数组签名一致,且输出与输入匹配;

    funcs.reduce((a, b) => (...args) => a(b(...args)))

    function compose(...funcs) {

      return funcs

        .reverse()

        .reduce((fn1, fn2) => (...args) => fn2(fn1(...args)));

    }

    四、高阶函数组合,后面的函数作为前一高阶函数的参量输入,通过柯里化函数的局部赋值使函数组函数满足要求(next);

    ({ getState, dispatch }) => next => action

    给({ getState, dispatch }) => next => action签名的函数组分步赋值并进行串联的过程;

    整体上是dispatch的method swizzling;

    export default function applyMiddleware(...middlewares) {

      return (next)  =>

         (reducer, initialState) => {

            var store = next(reducer, initialState);

            var dispatch = store.dispatch;

            var chain = [];

    //构造初值

            var middlewareAPI = {

              getState: store.getState,

              dispatch: (action) => dispatch(action)

            };

    //给柯里化函数赋初值:next => action

            chain = middlewares.map(middleware => middleware(middlewareAPI));

    //next

            dispatch = compose(...chain, store.dispatch);

            return {

              ...store,

              dispatch

            };

       };

    }

  • 相关阅读:
    已解决[Authentication failed for token submission,Illegal hexadecimal charcter s at index 1]
    远程快速安装redis和远程连接
    远程快速安装mysql
    Swiper的jquery动态渲染不能滑动
    微服务架构攀登之路(三)之gRPC入门
    微服务架构攀登之路(二)之RPC
    微服务架构攀登之路(一)之微服务初识
    Go语言中new和make的区别
    Go语言实战爬虫项目
    Go语言系列(十一)- 日志收集系统架构
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11176169.html
Copyright © 2011-2022 走看看