zoukankan      html  css  js  c++  java
  • 函数柯里化

    在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术、

    举个例子:

    function add(a, b) {
    return a + b;
    }

    // 执行 add 函数,一次传入两个参数即可
    add(1, 2) // 3

    // 假设有一个 curry 函数可以做到柯里化
    var addCurry = curry(add);
    addCurry(1)(2) // 3

    用途

    我们会讲到如何写出这个 curry 函数,并且会将这个 curry 函数写的很强大,但是在编写之前,我们需要知道柯里化到底有什么用?

    // 示意而已
    function ajax(type, url, data) {
    var xhr = new XMLHttpRequest();
    xhr.open(type, url, true);
    xhr.send(data);
    }

    // 虽然 ajax 这个函数非常通用,但在重复调用的时候参数冗余
    ajax('POST', 'www.test.com', "name=kevin")
    ajax('POST', 'www.test2.com', "name=kevin")
    ajax('POST', 'www.test3.com', "name=kevin")

    // 利用 curry
    var ajaxCurry = curry(ajax);

    // 以 POST 类型请求数据
    var post = ajaxCurry('POST');
    post('www.test.com', "name=kevin");

    // 以 POST 类型请求来自于 www.test.com 的数据
    var postFromTest = post('www.test.com');
    postFromTest("name=kevin");

    curry 的这种用途可以理解为:参数复用。本质上是降低通用性,提高适用性。

    var prop = curry(function (key, obj) {
    return obj[key]
    });

    var name = person.map(prop('name'))

  • 相关阅读:
    几个工具类
    C#学习-程序集和反射
    Unity学习-鼠标的常用操作(八)
    Unity学习-碰撞检测(七)
    Unity学习-摄像机的使用(六)
    Unity学习-地形的设置(五)
    Unity学习-预制(四)
    Unity学习-元素类型(三)
    Unity学习-软件的基本操作(二)
    Unity学习-工具准备(一)
  • 原文地址:https://www.cnblogs.com/zhouyideboke/p/9837676.html
Copyright © 2011-2022 走看看