前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript学习之Pointfree是什么

javascript学习之Pointfree是什么

作者头像
开水泡饭
发布2022-12-26 16:24:26
3750
发布2022-12-26 16:24:26
举报
文章被收录于专栏:开水泡饭的前端学习之路

Pointfree

Point-free是一种编程风格,这是一种在函数里面实际上没有写任何东西的函数编写方式,这种方式可以将一个函数与其他函数一起生成一个新的函数。我们可以把数据处理的过程定义成与数据无关的合成运算,不需要用到代表数据的那个参数,只要把简单的运算步骤聚合成一起,在使用这种模式之前我们需要定义一些辅助的基本运算函数,下面这个就是Pointfree模式

  • 不需要指明处理的数据
  • 只需要合成运算过程
  • 需要定义一些辅助的基本运算函数
代码语言:javascript
复制
const f = fp.flowRight(fp.toLower, fp.join('-'), fp.split(' '))

函数式编程的核心就是把运算过程抽象成函数,而Pointfree模式就是把抽象出来的函数再合成成一个新的函数,这个合成有是一个抽象的过程,在抽象的过程中我们依然不需要关心数据, Point-free 模式来实现 AAA BBB ==> aaa-bbb

代码语言:javascript
复制
// point tree
const fp = require('lodash/fp')

const f = fp.flowRight(fp.replace(/\s+/g, '-'), fp.toLower)

console.log(f(['AAA    BBBB']))

可以看出来Pointfree实现模式其实就是函数组合

Pointfree 案例

用实现Point-free 模式来实现 word wild web ==> W. W. W.

  • 第一步先用空格切割
  • 把数组每一项转化成大些
  • 取出每一项元素第一个字母
  • .空格连接数组
代码语言:javascript
复制
const fp = require('lodash/fp')

const firstLetterToUpper = fp.flowRight(
  fp.join(' '),
  fp.map(fp.first),
  fp.map(fp.toUpper),
  fp.split(' ')
)
// 

console.log(firstLetterToUpper('word wild web')) // W. W. W

这个是否发现我们循环了两次,根据函数结合律我们可以在map里面把转化大写和取第一个字母方法合并

代码语言:javascript
复制
const firstLetterToUpper = fp.flowRight(
  fp.join('. '),
  fp.map(fp.flowRight(fp.first, fp.toUpper)),
  fp.split(' ')
)

console.log(firstLetterToUpper('word wild web')) // W. W. W
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Pointfree
    • Pointfree 案例
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档