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 的编程思维。具体来说,它避免了使用命名变量和循环等控制流语句,并将代码表达为一系列函数组合的形式,强调了函数之间的转换和组合。

在这个例子中,我们可以看到所有函数都是无副作用的(即没有修改任何外部状态),并且每个函数都只接收一个输入参数并返回一个输出结果,在这种情况下,可以将这些函数视为数学上的函数。这种函数式编程的风格使得代码更加简洁、清晰和易于理解,尤其适用于处理复杂的数据转换或计算问题。

最后修改:2023 年 03 月 28 日
收款不要了,给孩子补充点点赞数吧