超级简单的coffeescript问题
circles = []
for coordinate, i in coordinates
circles[i] = new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx)
这行得通。但我知道,使用 candy 语法,可能有甚至更咖啡脚本的方式来写这个。有没有办法在不使用的情况下编写这个i
?
超级简单的coffeescript问题
circles = []
for coordinate, i in coordinates
circles[i] = new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx)
这行得通。但我知道,使用 candy 语法,可能有甚至更咖啡脚本的方式来写这个。有没有办法在不使用的情况下编写这个i
?
规范的 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 将每次迭代的结果收集到一个数组中。
circles.push(new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx))
;)
更多的“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
你总是可以使用jQuery 地图:
circles = jQuery.map(coordinates,
(coordinate) -> new MakeCircle(cnBlue, coordinate.x, coordinate.y, 16, 8, 0, theCanvas.ctx)
)
我以前从未真正编写过 CoffeeScript,所以如果不能按原样编译,我深表歉意。这绝对是一种更“实用”的方式来做你想做的事,我认为这是现代 javascript。