资讯专栏INFORMATION COLUMN

认识 科里化(curry)——JS函数式编程

gclove / 3421人阅读

摘要:科里化概念只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。只定义了一个函数,他接受一个参数并返回一个新的函数,调用之后,返回的函数就通过必报的方式记住了的第一个参数。

科里化

概念: 只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。

var add = function(x) {

    return function(y) {
        return x + y;
    };
};

var increment = add(1);
var addTen = add(10);

increment(2);

addTen(2);        

只定义了一个 add 函数,他接受一个参数并返回一个新的函数,调用 add 之后,返回的函数就通过必报的方式记住了 add 的第一个参数。一次性地调用它是在是有点繁琐,好在我们可以使用一个特殊的curry帮助函数使这类函数的定义和调用更加容易。

var curry = require("lodash").curry;

var match = curry(function(what,str){
    return str.match(what);
});

var replace = curry(function(what, replacement, str){
    return str.replace(what, replacement);
});

var filter = curry(function(f, ary) {
    return ary.filter(f);
});

var map = curry(function(f, ary) {
    return ary.map(f);
});

我在上面的代码中遵循的是一种简单,同时也非常重要的模式。即策略性地把要操作的数据(string, Array)放到最后一个参数里。到使用它们的时候就明白这么做的原因是什么了。

match(/s+/g, "hello world");
// [ " " ]

match(/s+/g)("hello world");
// [ " " ]

var hasSpaces = match (/s + /g);
// function(x) { return x.match(/s+/g) }

hasSpaces("hello World");
// [ " "]


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80325.html

相关文章

  • Js-函数编程

    摘要:组合组合的功能非常强大,也是函数式编程的一个核心概念,所谓的对过程进行封装很大程度上就是依赖于组合。在理解之前,先认识一个东西概念容器容器为函数式编程里普通的变量对象函数提供了一层极其强大的外衣,赋予了它们一些很惊艳的特性。 前言 JavaScript是一门多范式语言,即可使用OOP(面向对象),也可以使用FP(函数式),由于笔者最近在学习React相关的技术栈,想进一步深入了解其思想...

    whinc 评论0 收藏0
  • 函数编程与面向对象编程[1]: Lambda表达 函数柯里 高阶函数

    摘要:函数式编程与面向对象编程表达式函数柯里化高阶函数之剑什么是表达式例子定义表达式是一个匿名函数,表达式基于数学中的演算得名,直接对应于其中的抽象,是一个匿名函数,即没有函数名的函数。 函数式编程与面向对象编程[1]: Lambda表达式 函数柯里化 高阶函数.md 之剑 2016.5.2 11:19:09 什么是lambda表达式 例子 For example, in Lisp the...

    张金宝 评论0 收藏0
  • 函数 js 接口实现原理,以及 lodash/fp 模块

    摘要:函数式接口之前在上看到一个技术视频,讲的接口为什么不好用,以及什么样的接口更好用。演讲者是的作者,他提出了一种全面函数式的接口设计模式。言归正传,今天聊聊这样的接口如何实现,以及中的模块。 函数式 js 接口 之前在 youtube 上看到一个技术视频,讲underscore.js的接口为什么不好用,以及什么样的接口更好用。演讲者是 lodash.js 的作者,他提出了一种全面函数式的...

    asce1885 评论0 收藏0
  • 【响应编程的思维艺术】 (3)flatMap背后的代数理论Monad

    摘要:本文是响应式编程第二章序列的深入研究这篇文章的学习笔记。函数科里化的基本应用,也是函数式编程中运算管道构建的基本方法。四资料参考函数式编程指南 本文是Rxjs 响应式编程-第二章:序列的深入研究这篇文章的学习笔记。示例代码托管在:http://www.github.com/dashnowords/blogs 更多博文:《大史住在大前端》目录 showImg(https://segme...

    MorePainMoreGain 评论0 收藏0
  • 从一道面试题认识函数柯里

    摘要:函数柯里化在函数式编程中,函数是一等公民。函数柯里化的主要作用和特点就是参数复用提前返回和延迟执行。可能在实际应用场景中,很少使用函数柯里化的解决方案,但是了解认识函数柯里化对自身的提升还是有帮助的。 最近在整理面试资源的时候,发现一道有意思的题目,所以就记录下来。 题目 如何实现 multi(2)(3)(4)=24? 首先来分析下这道题,实现一个 multi 函数并依次传入参数执行,...

    13651657101 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<