zoukankan      html  css  js  c++  java
  • js的函数式编程-柯里化

    Currying 为实现多参函数提供了一个递归降解的实现思路——把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数,在某些编程语言中(如 Haskell),是通过 Currying 技术支持多参函数这一语言特性的。
    所以 Currying 原本是一门编译原理层面的技术,用途是实现多参函数。
    在《Mostly adequate guide》一书中,这样总结了 Currying ——只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
    function currying(fn, ...args) {
      if (args.length >= fn.length) {
        return fn(...args);
      }
      return function(...args2) {
        return currying(fn, ...args, ...args2);
      };
    }

     

    核心思想:比较多次接受的参数总数与函数定义时的入参数量,当接受参数的数量大于或等于被 Currying 函数的传入参数数量时,就返回计算结果,否则返回一个继续接受参数的函数。
     
    Currying的作用:

    1.参数复用:固定参数,根据curring后传入的参数不同实现函数的不同计算值

    2.延迟执行:利用curring 函数实现返回一个函数,其执行结果是返回一个传入函数的执行结果
    如:
    function currying (fn, ...args1) { 
      return function (...args2) {
         return fn(...args1, ...args2) 
       } 
    }
    总结:curring 的实质是利用闭包的原理来占存一部分参数,并返回一个函数,其执行结果是传入函数的执行结果。
  • 相关阅读:
    MySQL查询优化程序
    mysql主从:主键冲突问题
    Cacti 'graph_xport.php' SQL注入漏洞
    Nginx SPDY缓冲区溢出漏洞
    Zend Framework XML外部实体和安全绕过漏洞
    WordPress 3.8.1 /xmlrpc.php拒绝服务漏洞
    OpenSSH 'child_set_env()'函数安全绕过漏洞
    PHP "gdImageCreateFromXpm()"空指针间接引用漏洞
    Apache HTTP Server多个拒绝服务漏洞
    Samba 安全漏洞
  • 原文地址:https://www.cnblogs.com/chrissong/p/10387498.html
Copyright © 2011-2022 走看看