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


    引子

    说到元组的话,可能不少小伙伴首先想到的是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的前端相关电子书,《前端面试宝典(附答案和解析)》,难点、重点知识视频教程(全套)。



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

  • 相关阅读:
    Windows Server 2012服务器无法识别ADB Interface的解决办法
    接口自动化入门:Requests请求头设置详解!
    算法训练营64-图论-深度优先优先搜索(dfs)-广度优先搜索(bfs)
    西南民族大学计算机考研资料汇总
    JAVA计算机毕业设计疫情展示平台Mybatis+源码+数据库+lw文档+系统+调试部署
    CNN-generated images are surprisingly easy to spot... for now
    打字机效果的实现与应用
    基于微信小程序的公交信息在线查询系统小程序设计与实现(源码+lw+部署文档+讲解等)
    dnmp运行时404报错
    15届蓝桥杯第一期模拟赛所有题目解析
  • 原文地址:https://blog.csdn.net/web2022050901/article/details/127697724