3

超簡単なコーヒースクリプトの質問

circles = []
for coordinate, i in coordinates
    circles[i] = new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx) 

これは機能します。しかし、構文 candy を使用すると、これを書くためのおそらくよりコーヒースクリプト的な方法があることを私は知っています。を使わずにこれを書く方法はありiますか?

4

4 に答える 4

3

正規のCoffeeScriptの方法は、理解のためにforを使用することです。これにより、配列が返されます。

circles = for coordinate in coordinates
  new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx)

または、1行で:

circles = (new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx) for coordinate in coordinates)

ループと理解を参照してください:

上記の例では内包の値を変数に割り当てているため、CoffeeScriptは各反復の結果を配列に収集していることに注意してください。

于 2012-05-04T10:50:20.953 に答える
1
circles.push(new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx))

;)

于 2012-05-04T05:31:43.477 に答える
0

もっと「coffeescriptish」はそれを1行で書いています:

circles = []
circles[i] = new MakeCircle(cnBlue, coor.x, coor.y, 16, 8, 0, theCanvas.ctx) for coor, i in coordinates

iプッシュを使用するときに削除できます

circles = []
mc = (x,y) -> new MakeCircle cnBlue,x,y,16,8,0,theCanvas.ctx
circles.push mc(coor.x,coor.y) for coor in coordinates
于 2012-05-04T05:43:08.290 に答える
-1

いつでもjQuery mapを使用できます:

circles = jQuery.map(coordinates, 
    (coordinate) -> new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx)
)

私は実際に CoffeeScript を書いたことがないので、そのままコンパイルできない場合は申し訳ありません。これは間違いなく、あなたが望むことを行うためのより「機能的な」スタイルの方法であり、私はこれを最新の JavaScript と同一視しています。

于 2012-05-04T05:34:09.623 に答える