函数柯里化

一.柯里化是什么?

通过函数调用继续返回函数的形式,实现多次接收参数最后统一处理的编码形式 。

二.怎么使用

(1)可以使用lodash插件进行使用

使用的步骤:

1.导入lodash包

const  aa = require('lodash')

2.要实现柯里化的函数

function sum(a, b, c, d) {

return a + b + c + d

3. curry: 能把普通函数变成柯里化的形式进行调用。

const sumTemp = aa.curry(sum)

4.调用

sumTemp (1,2,3,4 )   //打印的结果是10。

三.解决了什么问题

解决了:变成柯里化的最重要的一个作用,实现参数的复用。 

代码演示:

  function fn(a){
      return function(b,c){
     console.log(`${a}${b}${c}`);
      }
    }
     const aa= fn(' https:')
    const a1=aa('www.abc.com/','/api') //    https:www.abc.com//api
    const a2=aa('www.adc.com/','/test') //https:www.adc.com//test
    console.log(a1,a2);

 在这里复用了'https':这个协议

四.在实际开发中如何进行应用

在实际开发中,如何需要验证多个邮箱和电话

checkByRegExp(/^1\d{10}$/, '18642838455'); // 校验电话号码 checkByRegExp(/^1\d{10}$/, 

'13109840560'); // 校验电话号码 checkByRegExp(/^1\d{10}$/, '13204061212'); // 校验电话号码 

checkByRegExp(/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/, 'test@163.com'); // 校验邮箱 

checkByRegExp(/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/, 'test@qq.com'); // 校验邮箱 


checkByRegExp(/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/, 'test@gmail.com'); // 校验邮箱

柯里化:

//进行柯里化
let _check = curry(checkByRegExp);
//生成工具函数,验证电话号码
let checkCellPhone = _check(/^1\d{10}$/);
//生成工具函数,验证邮箱
let checkEmail = _check(/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/);

checkCellPhone('18642838455'); // 校验电话号码
checkCellPhone('13109840560'); // 校验电话号码
checkCellPhone('13204061212'); // 校验电话号码

checkEmail('test@163.com'); // 校验邮箱
checkEmail('test@qq.com'); // 校验邮箱
checkEmail('test@gmail.com'); // 校验邮箱

再来看看通过柯里化封装后,我们的代码是不是变得又简洁又直观了呢。

经过柯里化后,我们生成了两个函数 checkCellPhone 和 checkEmail, checkCellPhone 函数只能验证传入的字符串是否是电话号码, checkEmail 函数只能验证传入的字符串是否是邮箱, 它们与 原函数 checkByRegExp 相比,从功能上通用性降低了,但适用性提升了。 柯里化的这种用途可以被理解为:参数复用。转载:https://juejin.cn/post/6844903882208837645

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值