Point free 是一种编程风格,它的具体实现是函数的组合,但它更抽象一些。我们可以把数据处理的过程,定义成与数据无关的合成运算,不需要代表数据的那个参数。只要把简单的运算步骤合成到一起(函数组合),在使用这种模式之前需要定义一些辅助的基本函数。我们在之前使用函数组合处理一些问题的时候,其实就是一种 Point free 模式。
const f = fp.flowRight(
fp.join('-'),
fp.map(fp.toLower),
fp.split(' ')
)
Point free 的三个特点:
- 不需要指明处理的数据
- 只需要合成运算过程
- 需要定义一些辅助的运算过程
案例演示
function f (word) { // 非point free 模式
return word.toLowerCase().replace(/\s+/g, '_')
}
const f = fp.flowRight(fp.replace(/\s+/g, '_'), fp.toLower) // point free 模式
总结:
函数式编程的核心就是把运算过程抽象成函数,而Point free 函数就是把我们抽象出来的各个功能函数,再组合成一个复合功能函数。而这个合成的过程其实又是一个抽象的过程,在这个抽象的过程中,我们依然是不需要关系数据的。所以说,Point free 的实现方式就是函数的组合。