首页 > 其他分享 >实现一个无限累加的 sum 函数

实现一个无限累加的 sum 函数

时间:2023-04-03 14:23:28浏览次数:39  
标签:function ... args 函数 sum valueOf 累加 allArgs

实现一个 sum 函数如下所示:

sum(1, 2, 3).valueOf(); //6
sum(2, 3)(2).valueOf(); //7
sum(1)(2)(3)(4).valueOf(); //10
sum(2)(4, 1)(2).valueOf(); //9
sum(1)(2)(3)(4)(5)(6).valueOf(); // 21

 可以这样

function sum(...args) {
  // allArgs 收集所有的 args
  let allArgs = args;

  // 返回一个 function 可以接受参数
  function fn(...args2) {
    allArgs = allArgs.concat(args2);
    return fn;
  }

  // function 上有一个属性叫 valueOf
  fn.valueOf = function () {
    // valueOf 触发时才开始累加
    return allArgs.reduce((res, cur) => (res += cur));
  };
  return fn;
}

 简化一下

function sum(...args) {
  const f = (...rest) => sum(...args, ...rest);
  f.valueOf = () => args.reduce((x, y) => x + y, 0);
  return f;
}

  

标签:function,...,args,函数,sum,valueOf,累加,allArgs
From: https://www.cnblogs.com/maomao93/p/17282917.html

相关文章

  • MATLAB计算变异函数并绘制经验半方差图
      本文介绍基于MATLAB求取空间数据的变异函数,并绘制经验半方差图的方法。  由于本文所用的数据并不是我的,因此遗憾不能将数据一并展示给大家;但是依据本篇博客的思想与对代码的详细解释,大家用自己的数据,可以将空间数据变异函数计算与经验半方差图绘制的全部过程与分析方法加以......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-复杂函数快速转单行函数从0到1快速入门——官
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • Vertica中的group_concat函数
    MySQL中一个很实用的函数:group_concat,在vertica中,有一个功能相同的函数:LISTAGG。Vertica官方参考文档用法:selectclient_id,LISTAGG(prod_code)frombdware.test1groupbyclient_id默认最大返回长度是1024,如果超出1024,默认策略是报错,可以手动调整为截取模式。如下:s......
  • ROW_NUMBER()函数的使用
    今天在做一道用SQL排名排序的类型问题时发现一个既好用又容易理解的SQL函数ROW_NUMBER()ROW_NUMBER()OVER(PARTITIONBYSC.corse_idORDERBYSC.number)RNPARTITIONBY后面跟需要分组的字段该参数可选ORDERBY则是针对这个子句的排序该参数必须的比如:查询各科成绩前三......
  • Python3内置函数之D系列
    1、delattr()在Python中,delattr()函数用于删除对象的属性。它接受两个参数:第一个参数是要删除属性的对象,第二个参数是要删除的属性的名称。如果对象中不存在指定的属性,将会抛出AttributeError异常。 2、dict()在Python中,dict()函数用于创建一个字典对象。它可以接受不同类型......
  • ORACLE之PACKAGE-包、存储过程、函数
    原文地址:https://www.cnblogs.com/hoaprox/p/5316444.html1,简单的包。创建包规范:createorreplacepackagepack_test1is--定义过程1procedurep_test1(p_1invarchar2);--定义函数1functionf_test1(p_1invarchar2)returnvarchar2;endpack_test1;......
  • C语言,str系列函数
     1、strcat()此函数原型为char*strcat(char*dest,constchar*src).功能为连接两个字符串,把src连接到dest后面;返回dest地址//函数实现char*strcat(char*dest,constchar*src){char*addr=dest;while(*dest)//找到'\0'{dest++;};......
  • 数据集函数sum与单元格函数sum怎么用?
    数据集函数sum与单元格函数sum怎么用?在皕杰报表的函数中,数据集函数和单元格函数都有sum求和函数,但其用法是不同的。我们先看两个函数的说明: 数据集函数sum函数说明:从数据集中,从满足条件的记录中,算出给定字段或表达式的总和语法:datasetName.sum(selectExp{,filterExp{,isRootGroup......
  • Menu callback函数
    对于一般的函数来说,函数的编写和调用都是我们自己。但callback函数不是这样的,它是由我们编写但是不由我们调用,由我们将函数指针传给其他模块,再由其他模块通过我们传递的函数指针来调用我们编写的函数。 在menu5.2中,向其他模块传递callback函数的函数如下,传递的callback函数就......
  • 【ChatGPT答】频率特性、频谱特性、幅频特性的区别,传递函数和增益的区别
    仅供参考。频率特性频率特性是指一个系统或信号在不同频率下的性质,通常用于描述系统或信号的频率响应。在信号处理中,频率特性是对信号在频率域中的分布和特征进行描述的一种方式,也是理解信号在不同频率下的行为的基础。具体来说,频率特性包括以下几个方面:频率响应:一个系统对......