web-dev-qa-db-ja.com

同等のRuby .times in Coffeescript

以下に最も簡潔に相当するCoffeescriptは何ですか?

# Ruby    
3.times { puts 'hi' }

私が考えることができる最高のものは次のとおりです。

# coffeescript
for n in [1..3]
  console.log 'hi'
42
sivabudh
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プロトタイプを変更するとグローバルな影響があるため、2番目の方法は推奨されないことに注意してください。

編集:@BrianGenisioのコメントに従って変更(.prototype.-> ::

編集2:0の処理を修正、@ Brandonに感謝

59
thejh

すでに nderscore.js をCoffeeScriptと一緒に使用しているので:

_(3).times -> console.log('hi')
32
tokland

JavaScript配列(少なくとも最新のもの)には forEach メソッドがあり、CoffeeScript [1..3]範囲は配列であるため、次のことができます。

[1..3].forEach -> console.log 'hi'

ただし、警告が1つあります。これは、[1..n]nが大きい場合、便利な表記を得るためだけに大きな配列を作成するため、ブラウザでは少し難しいかもしれません。ただし、nが小さい場合は、配列を構築するオーバーヘッドはそれほど重要ではありません。

8
mu is too short
console.log 'hi' for[]in length:3
0
matyr

使用 lodash

_.times 3, -> console.log 'hi'
0
trushkevich