javascript - 如何制作一个curries到第n个整数的ADD函数
问题描述
我怎样才能实现以下?
console.log(Sum(1)) // 1
console.log(Sum(1)(2)) // 3
console.log(Sum(1)(2)(3)) // 6
console.log(Sum(1)(2)(3)(4)) // 10
我试过了,
var add = function(x) {
return function(y) { return x + y; };
}
但这仅适用于一次潜水。
解决方案
基本上,如果不作为函数调用,则需要返回一个带有toString
获取值的方法的函数。
function sum(x) {
function _(y) { x += y; return _; };
_.toString = function () { return x; };
return _;
}
console.log(sum(1)) // 1
console.log(sum(1)(2)) // 3
console.log(sum(1)(2)(3)) // 6
console.log(sum(1)(2)(3)(4)) // 10
推荐阅读
- javascript - 如何在带有 webpack 应用程序的 typescript 中使用动态导入
- android - instanceof not working for a JSON object - why?
- javascript - 如何在 .json 对象属性中使用 3 级引号?
- python - 如何正确使用pyrebase order_by_key?
- spring - Spring Boot 2 中针对 Actuator 和自定义 API 端点的单独身份验证提供程序
- unicode - 有没有办法绕过pdfmake上的这个错误?“类型错误:无法读取 null 的属性‘音节’”
- sdl-2 - 使用硬件加速渲染器时,SDL2 渲染复制不再起作用
- mongodb - pymongo 查询错误中的 upsert 和 arrayfilters - TypeError: upsert must be True or False
- python-3.x - 如何停止 Chatterbot 培训文件每次下载和显示日志?
- java - 为什么 Room 在迁移后删除我的数据库