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'))

  • 相关阅读:
    实用的设计模式【一】---类设计法则
    vimium 使用心得
    记一次给部门做分享的心得
    centos7安装docker和docker compose【转】
    docker 部署 jenkins
    centos删除docker0虚拟网卡
    CentOS7查看和关闭防火墙
    .Net Core Autofac实现依赖注入
    【转】Docker基础
    【转】使用Docker+Jenkins自动构建部署
  • 原文地址:https://www.cnblogs.com/zhouyideboke/p/9837676.html
Copyright © 2011-2022 走看看