以下最简洁的Coffeescript是什么:
# ruby
3.times { puts 'hi' }
我能想到的最好的是:
# coffeescript
for n in [1..3]
console.log 'hi'
答案 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'