函数的柯里化

柯里化

高阶函数:参数或返回值为函数的函数


export interface FormConfigDef {
    name: string,
    unit: string,
    step: number,
    min: number,
    max: number,
}
export const getConfig = function(
    name: string,
    unit: string,
    step: number,
    min: number,
    max: number,
):FormConfigDef {
    return {name, unit, step, min, max}
}

export namespace formConfigConstructor {
    export const tubeCurrentConfig = getConfig("hh", "hdhd", 1, 12, 21);
    export const rotationSpeedConfig = getConfig("ddd","erer", 55, 66, 77);
}

也就是下面这样:

//不要用这种硬编码写数据
export const tubeCurrentConfigx = {
        name: "hh",
        unit: "hdhd",
        step: 1,
        min: 12,
        max: 21
}

export const rotationSpeedConfigx = {
    name: "ddd",
    unit: "erer",
    step: 55,
    min: 66,
    max: 77
}

 


 

API:

[nzTipFormatter]Slider 会把当前值传给 nzTipFormatter,并在 Tooltip 中显示 nzTipFormatter 的返回值,若为 null,则隐藏 Tooltip。(value: number) => string
  formatter(type: typesRecord): (x: number) => string {
    function formaterKV(value: number) {
      return `${value} kV`;
    }
    function formaterMA(value: number): string {
      return `${value} mA`;
    }
    if (type.name === "Voltage") {
      // return value => `${value} kV`;
      return formaterKV;
    }
    if (type.name === "Current") {
      // return value => `${value} mA`;
      return formaterMA;
    }
    if (type.name === "Rotation") {
      return value => `${value} s/rot`;
    }
    if (type.name === "Pitch") {
      return value => `${value} mm`;
    } else {
      return value => `${value} fail`;
    }
  } //输入函数 返回一个函数

  formatterBin(type: typesRecord, value: number) {
    if (type.name === "Voltage") {
      return `${value} kV`;
    } else {
      return `${value} fail`;
    }
  }

  formatterOld(type: typesRecord): string {
    console.log(type);
    if (type.name === "Voltage") {
      return `${type} kV`;
    } else {
      return `${type} fail`;
    }
  } //返回一个值
function add(a: number, b: number) {
  return a + b;
}
function addN(a: number): (b: number) => number {
  function final(b: number) {
    return add(a, b);
  }
  return final;
}

const result = add(3, 5); // 8
const add3 = addN(3);
const foo = addN(10);

add3(5); // 8
add3(6); // 9

foo(5); // 15

https://llh911001.gitbooks.io/mostly-adequate-guide-chinese/content/ch1.html#%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E4%BE%8B%E5%AD%90

函数:可以像对待任何其他数据类型一样对待它们——把它们存在数组里,当作参数传递,赋值给变量...等等。

函数的柯里化:curry 函数所做的正是这样——每传递一个参数调用函数,就返回一个新函数处理剩余的参数。这就是一个输入对应一个输出啊。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值