柯里化
高阶函数:参数或返回值为函数的函数
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
函数:可以像对待任何其他数据类型一样对待它们——把它们存在数组里,当作参数传递,赋值给变量...等等。
函数的柯里化:curry 函数所做的正是这样——每传递一个参数调用函数,就返回一个新函数处理剩余的参数。这就是一个输入对应一个输出啊。