convert - Equivalent Ruby.times en Coffeescript
js to coff (5)
Dado que ya está usando Underscore.js junto con CoffeeScript:
_(3).times -> console.log(''hi'')
¿Cuál es el Coffeescript equivalente más concisa a lo siguiente?
# ruby
3.times { puts ''hi'' }
?
Lo mejor que pude pensar es:
# coffeescript
for n in [1..3]
console.log ''hi''
Las matrices JavaScript (al menos las modernas) tienen un método [1..3]
gamas CoffeeScript [1..3]
son matrices, por lo que puedes hacer esto:
[1..3].forEach -> console.log ''hi''
Sin embargo, una advertencia: esto podría ser un poco difícil para el navegador si su n
en [1..n]
es grande, ya que construirá una gran matriz solo para obtener una notación conveniente; pero si n
es pequeño, entonces la sobrecarga de construir la matriz no debería importar tanto.
usando lodash :
_.times 3, -> console.log ''hi''
console.log ''hi'' for [1..3]
Para manejar también 0
correctamente:
console.log ''hi'' for [1..n] if n
O con prototipo de magia:
Number::times = (fn) ->
do fn for [1..@valueOf()] if @valueOf()
return
3.times -> console.log ''hi''
Tenga en cuenta que no se recomienda el segundo método porque cambiar el prototipo del Number
tiene efectos globales.
Editar: Modificado según el comentario de @ BrianGenisio ( .prototype.
-> ::
.prototype.
Edición 2: manejo fijo de 0, gracias @Brandon
console.log ''hi'' for[]in length:3