Coffeescript:Splat Sum函数

时间:2014-12-16 00:36:49

标签: javascript recursion coffeescript

我在雅虎的一次采访中得到了这个问题!:建立一个sum函数,它可以接受无限量的参数(无到无穷大),并且会对所有参数求和(返回0如果没有传入参数)。

我的解决方案(错误),以下是coffeescript splats

sum = (...) ->
    return 0 if arguments.length < 1
    sum arguments[0] + ...

如何使用splats编写如上所述的coffeescript sum函数?

2 个答案:

答案 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()}"