Options
All
  • Public
  • Public/Protected
  • All
Menu

Module func/curry

Index

Functions

curry

0.0.55 provide
  • curry(func: any, ...preArgs: any[]): (...args: any[]) => any
  • 函数的柯里化

    remarks

    柯里化,可以理解为提前接收部分参数,延迟执行,不立即输出结果, 而是返回一个接受剩余参数的函数。因为这样的特性,也被称为部分 计算函数。柯里化,是一个逐步接收参数的过程

    remarks

    柯里化函数触发条件是传入参数长度为0

    example

    基本使用

    import { func } from 'onex-utils';
    
    const { curry } = func;
    const add = curry((a: number, b: number) => a + b);
    
    const add1 = add(1);
    const add2 = add(2);
    
    console.log(add1(5)()) // 6
    console.log(add2(5)()) // 7
    

    Parameters

    • func: any

      需要柯里化的函数

    • Rest ...preArgs: any[]

      柯里化参数

    Returns (...args: any[]) => any

    柯里化之后的函数

      • (...args: any[]): any
      • Parameters

        • Rest ...args: any[]

        Returns any

curryRight

0.0.55 provide
  • curryRight(func: any, ...afterPreArgs: any[]): (...args: any[]) => any
  • 函数的柯里化(先接受右边参数)

    remarks

    柯里化,可以理解为提前接收部分参数,延迟执行,不立即输出结果, 而是返回一个接受剩余参数的函数。因为这样的特性,也被称为部分 计算函数。柯里化,是一个逐步接收参数的过程

    remarks

    柯里化函数触发条件是传入参数长度为0

    example

    基本使用

    import { func } from 'onex-utils';
    
    const { curryRight } = func;
    const add = curryRight((a: number, b: number) => [a,b]);
    
    const add1 = add(1);
    const add2 = add(2);
    
    console.log(add1(5)()) // [5, 1]
    console.log(add2(5)()) // [5, 2]
    

    Parameters

    • func: any

      需要柯里化的函数

    • Rest ...afterPreArgs: any[]

      柯里化参数

    Returns (...args: any[]) => any

    柯里化之后的函数

      • (...args: any[]): any
      • Parameters

        • Rest ...args: any[]

        Returns any

unCurry

0.0.55 provide
  • unCurry(func: any): (that: any, ...args: any[]) => any
  • 反柯里化

    remarks

    创建一个应用范围更广的函数。使得本来只有特定对象才适用的方法,扩展到更多的对象。

    example

    基本使用方式

    import { func } from 'onex-utils';
    
    const { curry } = func;
    
    const testArr = [];
    func.unCurry(Array.prototype.push)(testArr, 1, 2);
    // testArr = [1, 2]
    

    Parameters

    • func: any

    Returns (that: any, ...args: any[]) => any

      • (that: any, ...args: any[]): any
      • Parameters

        • that: any
        • Rest ...args: any[]

        Returns any