我在雅虎的一次采访中得到了这个问题!:建立一个sum
函数,它可以接受无限量的参数(无到无穷大),并且会对所有参数求和(返回0
如果没有传入参数)。
我的解决方案(错误),以下是coffeescript splats:
sum = (...) ->
return 0 if arguments.length < 1
sum arguments[0] + ...
如何使用splats编写如上所述的coffeescript sum
函数?
答案 0 :(得分:1)
您需要为splat参数命名。 “...
”不是有效的变量名称。你似乎想要
sum = (x, xs...) ->
if arguments.length < 1
then 0
else x + sum xs
答案 1 :(得分:1)
我确定面试问题的目的是看看如果手工编码你会如何解决问题,这些面试问题总是有点人为,但是...
sum = (ary...) ->
ary.reduce (previous, current, index, array) ->
previous + current
, 0
console.log "Sum is: #{sum(1, 4, 6)}"
console.log "Sum is: #{sum()}"