Coffeescript中的等效Ruby .times

时间:2011-11-04 19:45:25

标签: ruby coffeescript

以下最简洁的Coffeescript是什么:

# ruby    
3.times { puts 'hi' }

我能想到的最好的是:

# coffeescript
for n in [1..3]
  console.log 'hi'

5 个答案:

答案 0 :(得分:58)

console.log 'hi' for [1..3]

还要正确处理0

console.log 'hi' for [1..n] if n

或者使用原型魔术:

Number::times = (fn) ->
  do fn for [1..@valueOf()] if @valueOf()
  return
3.times -> console.log 'hi'

请注意,建议不要使用第二种方法,因为更改Number原型具有全局效果。

编辑:根据@ BrianGenisio的评论(.prototype. - > ::

进行了更改

编辑2:固定处理0,感谢@Brandon

答案 1 :(得分:32)

由于您已经在使用Underscore.js以及CoffeeScript:

_(3).times -> console.log('hi')

答案 2 :(得分:8)

JavaScript数组(至少是现代数组)有forEach方法,CoffeeScript [1..3]范围是数组,所以你可以这样做:

[1..3].forEach -> console.log 'hi'

但是有一个警告:如果n中的[1..n]很大,浏览器可能会有点困难,因为您要构建一个大型数组只是为了获得方便的符号;但如果n很小,那么构建数组的开销应该不会那么重要。

答案 3 :(得分:0)

console.log 'hi' for[]in length:3

答案 4 :(得分:0)

使用lodash

_.times 3, -> console.log 'hi'