Equivalent Ruby .times in Coffeescript

前端 未结 5 2007
滥情空心
滥情空心 2021-02-11 13:25

What is the most concise equivalent Coffeescript to the following:

# ruby    
3.times { puts \'hi\' }

?

The best I could think of is:

5条回答
  •  终归单人心
    2021-02-11 14:12

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

    To also handle 0 correctly:

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

    Or with prototype magic:

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

    Note that the second method isn't recommended because changing the Number prototype has global effects.

    Edit: Changed according to @BrianGenisio's comment (.prototype. -> ::)

    Edit 2: fixed handling of 0, thanks @Brandon

提交回复
热议问题