es6 convert coffie coffee ruby coffeescript

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