Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
149 views
in Technique[技术] by (71.8m points)

Equivalent Ruby .times in Coffeescript

What is the most concise equivalent Coffeescript to the following:

# ruby    
3.times { puts 'hi' }

?

The best I could think of is:

# coffeescript
for n in [1..3]
  console.log 'hi'
question from:https://stackoverflow.com/questions/8014915/equivalent-ruby-times-in-coffeescript

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...