是否有可能实现一个万能的add函数

来源:14-1 课程导学

李行知

2019-01-11

设计一个函数add
可以做到

add(1,2,3,4)(1,2,3,4)
add(1,2,3)(1,2,3)(1,2,3)

也就是

add(...)...(...)

的函数出来?

不过我自己的感觉是不可能实现这个样子的函数。
因为总要有个手段可以进行退出
最多可能做到下面这两种实现

const add = (...arg) => {
	if (arg.length === 0) {
		return 0
	}
	if (arg.length === 1) {
		return add
	}
	return arg.reduce((total, num) => total + num)
}
console.log(
	add(1)(2)(3)(4, 5, 6)
);	

const addEmply = (...arg) => {
	if (arg.length === 0) {
		return 0
	}
	return (...arg2) => arg2.length === 0 ?
		arg.reduce((total, num) => total + num) : addEmply(...arg, ...arg2)
}
console.log(
	addEmply(1, 2, 3)(1, 2, 3, 4)(1,2,4,5)()
)

求解

写回答

1回答

Rosen

2019-01-13

设计这个函数的初衷是什么?

0
1
李行知
看柯里化的时候想到的。只是为了好玩
2019-01-13
共1条回复

真实数据对接 从0开发前后端分离的企业级上线项目

【毕设项目精品】前端实战,对接真实服务端数据,开发完整项目

4262 学习 · 4113 问题

查看课程