含义:Point Free是一种编程范式,可以把处理数据的细节抽象成与数据无关的组合函数,不需要具体的数据参数,只需要将不同的函数组合起来,借助一些辅助函数进行结果运算
特点:
- 不需要指明处理的数据
- 需要组合函数
- 借助一些辅助函数进行基本运算
非Point Free 与 Point Free的编程方式的差异
const fp = require('lodash/fp');
// 非 Ponit Free 明显的数据处理过程;指明处理的数据
function fnc(text){
return text.toLowerCase().replace(/\s+/g, '-')
}
console.log(fnc('Hello World'))
// Point Free 函数组合成运算过程 没有明显的处理数据过程 需要用到一些辅助函数
const f = fp.flowRight(fp.replace(/\s+/g, '-'), fp.toLower)
console.log(f('Hello World'));
Point Free案例
/**
* 使用Pont Free
* World wild web => W. W. W
*/
const fp = require('lodash/fp');
// const firstLetterToUpper = fp.flowRight(fp.join('. '), fp.map(fp.first), fp.map(fp.toUpper), fp.split(' ')) // 简易版
const firstLetterToUpper = fp.flowRight(fp.join('. '), fp.map(fp.flowRight(fp.first, fp.toUpper)), fp.split(' ')) // 优化版
console.log(firstLetterToUpper('World wild web'))