PointFree
我们可以把数据处理的过程定义成与数据无关的合成运算,不需要使用到代表数据的那个参数,只需要把简单的运算合并到一起,在这种模式下我们还需要定义一些基本的运算函数
- 不需要指明处理的数据
- 只需要处理合成运算的过程
- 需要定义一些基本的运算函数
// 非 PointFree模式
// SUZUME TRAVEL => suzume_travel
const f = (word) => {
return word.toLowerCase().replace(/\s+/g, "_");
};
// PointFree模式
const fp = require("lodash/fp");
const fPointFree = fp.flowRight(fp.replace(/\s+/g, "_"), fp.toLower);
PointFree模式其实就是函数组合
PointFree 案例
//
// bocchi the rock => B.T.R
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("bocchi the rock"));
这段 JavaScript 代码使用了 Point-Free 的编程思维。具体来说,它避免了使用命名变量和循环等控制流语句,并将代码表达为一系列函数组合的形式,强调了函数之间的转换和组合。
在这个例子中,我们可以看到所有函数都是无副作用的(即没有修改任何外部状态),并且每个函数都只接收一个输入参数并返回一个输出结果,在这种情况下,可以将这些函数视为数学上的函数。这种函数式编程的风格使得代码更加简洁、清晰和易于理解,尤其适用于处理复杂的数据转换或计算问题。