• 函数式编程中元组的简单运用


    引子

    说到元组的话,可能不少小伙伴首先想到的是TypeScript中的元组类型。

    在TypeScript中,元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同

     let x: [string, number]; x = ['Hello World', 1]; 
    
    • 1

    而我们这里要说的元组会更加的广义一些,具体是什么我们可以一步步的来走进它。

    缘起

    大家在使用函数过程中,势必会用到参数。不知道有没有小伙伴发现过这样一个问题,函数的复杂性往往跟函数的参数数量成正比,参数越多的函数,内部越复杂,使用起来愈发的不方便。

    比方说,一个判断字符串数据类型的函数和一个http请求函数的比较:

     // 判断字符串数据function isString (value) {return typeof value === 'string';}// 发送http请求function sendRequest(method, url, data) {...} 
    
    • 1

    对比起来,判断字符串数据类型的函数相对来说很容易使用,只存在一个参数,而http请求相对难以使用,因为参数相对较多一些。

    开局

    只有具有单一参数的纯函数是最理想的函数,也是最容易使用的,因为这种函数实现的功能非常单一,而且它的返回结果只依赖于入参。因此,我们应该尽可能的使用纯函数来进行开发,来确定函数更加灵活和通用,从而将业务进行解耦。但是,在真实的业务开发过程中,想要使用纯函数来实现业务功能还是很具有挑战性的。

    那如何在函数返回结果的时候额外添加一个状态呢?

    比方说,使用过Element UI的小伙伴,在使用Form表单的validate方法的时候,返回的就是(boolean, object)。

    通过类比,我们可以使用元组来作为返回值,将结果和状态作为一个元组来返回。

    下面我们还是以isString方法为例来展示一下为代码:

     function isString (vlaue) {...reutrn [boolen, errMsg];} 
    
    • 1

    元组到底是什么呢?

    元组是有限的、有许多元素的集合,通常来说由N个有限的值组成

    升级

    使用元组有什么好处呢?

    • 可以有效的减少函数参数
    • 避免数据污染,且不可变更

    下面我们以元组为例来实现一个表单的非空校验代码

     const trim = value => value.trim();
    const isNotNull = value => {if (!vlaue) {reutrn [false, 'Illegal input. Expected non-empty value.'];}return [true, 'Effective value.'];
    } 
    
    • 1
    • 2
    • 3

    大结局

    通过上面的例子可以看出来,元组是减少函数的参数数量的有效方法之一。另外,像是函数柯里化也是一种行之有效的方法,后续我们会深入的聊一下柯里化相关的内容。

    最后

    为大家准备了一个前端资料包。包含54本,2.57G的前端相关电子书,《前端面试宝典(附答案和解析)》,难点、重点知识视频教程(全套)。



    有需要的小伙伴,可以点击下方卡片领取,无偿分享

  • 相关阅读:
    noip游记
    pdf文档怎么压缩小一点?文件方法在这里
    从ABNF读懂HTTP协议格式
    【java计算机毕设】留守儿童管理系统 javaweb springMvc ssm mysql vue html 送文档+ppt
    Groovy安装开发环境
    React性能优化,六个小技巧教你减少组件无效渲染
    nvm使用的注意事项和常用命令。
    3年测试经验,测试用例应该达到这个水平才合格
    【Linux】 ls命令使用
    搅动PC市场风云,荣耀何以成为破局者?
  • 原文地址:https://blog.csdn.net/web2022050901/article/details/127697724