0

CoffeeScript の範囲 ( など) を作成したいのです[4...496]が、終了範囲ではなく長さを使用します。これは次のようなループで実行できます

myNum = getBigNumber()
newArray = ( n + myNum for n in [0...50] )

しかし、行方不明の範囲関連のショートカットがあるかどうか疑問に思っています。のようなものはありますか

[getBigNumber()...].length(50)CoffeeScriptで利用できますか?

4

1 に答える 1

1

あなたはただすることができます

range = [myNum...myNum + 50]

編集: mu がコメントで指摘しているように、上記のスニペットを使用するか、元のコードを使用するかにかかわらず、CoffeeScript はいくらか複雑になります。パフォーマンスが問題になる場合は、ループ用に単純な JS を使用することをお勧めします (CoffeeScript コードでバッククォートを使用)。

昇順(つまり、低から高)の範囲が必要であると仮定すると、次のことができます。

myNum  = getBigNumber()
length = 50
range  = new Array length
i      = 0
`for(; i < length ; i++) { range[i] = i + myNum }` # raw, escaped JS

これは、CoffeeScript の方法よりもはるかに高速ですが、CoffeeScript の範囲構文は、境界値を反転するだけで降順範囲の作成もサポートしていることに注意してください。そのため、CoffeeScript は (いつものように) 目に優しく、操作も簡単ですが、生の JS は私のテストでは 3.5 倍高速です。

于 2013-11-02T14:14:35.287 に答える