javascript - 如何检查链接的功能数量?
问题描述
我正在尝试解决 CodeWars 上的以下问题:链添加功能:
我们想创建一个函数,在连续调用时将数字相加。
add(1)(2); // returns 3
我们还希望能够继续向我们的链中添加数字。
add(1)(2)(3); // 6 add(1)(2)(3)(4); // 10 add(1)(2)(3)(4)(5); // 15
等等。
单个调用应返回传入的数字。
add(1); // 1
我们应该能够存储返回的值并重用它们。
var addTwo = add(2); addTwo; // 2 addTwo + 5; // 7 addTwo(3); // 5 addTwo(3)(5); // 10
我们可以假设传入的任何数字都是有效的整数。
我尝试了很多小时,但无济于事。就像例如。
add(1)(2)(4) <--- 3 chained functions
我了解了“currying”是什么,但是在我的 main 函数中返回一个函数只会满足add(1)(2)
<-- 2 个链式函数。同样,我试图在这里链接任意数量的函数,但我似乎无法弄清楚。
如果示例测试是add(5)(13)(3)(10)(5)(6)(20)
链接的 7 个函数......我不可能连续键入 7 个函数,除了第一个函数(主函数)之外,一个又一个返回。
我想问有没有办法检查链式函数的长度?除了我的问题,我会很感激一些提示,我并不是要一个完整的答案。
解决方案
我不可能连续输入 7 个函数,然后依次返回
这就是为什么您需要创建一个递归解决方案,以便它可以适用于任何链长度。
我应该补充一点,为了解决这个问题,您必须仔细查看测试的内容。这是一项测试:
Test.expect(add(1)(2)(3) == 6);
请特别注意使用的相等运算符。这应该给您一个提示,即如何可能返回一个既可以用于进一步链接,又可以同时等于一个数字的值。
提示1:
==
不是同一种平等===
提示2:
valueOf
提示 3:
函数是对象。它们可以像任何其他对象一样具有自定义属性。
提示4:
确保返回具有
valueOf
返回当前总和值的自定义方法的函数。
提示 5:
使用递归调用,将以下总和传递给它:
1. 传递给最外层函数调用
的参数 2. 传递给返回函数的参数
推荐阅读
- javascript - 如何在 vue-tables-2 中动态填充 listColumns?
- python - 与我在 Microsoft Graph 中使用 requests_oauthlib 请求的范围不同
- html - Angular 渲染了不必要的空间
- android - Ionic LoadingController 中的 HTML5 视频加载
- javascript - 有没有办法恢复 Vanilla JavaScript 中的 preventDefault 方法?
- jvm - 为什么 Jasmin 不喜欢这个汇编代码?
- python-3.x - 代码优化 - 按月比较两个日期时间列并创建一个新列太慢
- html - CSS:无法将圆角应用于自定义输入字段(在其他字段上工作)
- ssl - 如何从证书(.cer)、证书链(.p7b)和密钥(.key 和 .pem)生成 keystore.p12
- html - 锚链接转到未找到的页面而不是同一页面中的部分