3

超级简单的coffeescript问题

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 comprehension,它将返回一个数组:

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

或者,在一行上:

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”写在一行上:

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

i您可以在使用 push 时删除

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 地图

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 回答