CoffeeScript二维数组用法
我觉得我缺少了一些关于咖啡脚本和二维数组的东西。我只是尝试创建一个由空格组成的网格(想想checkers)。在使用arrays.map函数进行了一些搜索和发现之后,我得出了以下结论:CoffeeScript二维数组用法,coffeescript,Coffeescript,我觉得我缺少了一些关于咖啡脚本和二维数组的东西。我只是尝试创建一个由空格组成的网格(想想checkers)。在使用arrays.map函数进行了一些搜索和发现之后,我得出了以下结论: @spaces = [0...20].map (x)-> [0...20].map (y) -> new Elements.Space() 这看起来效果很好,我有一个很好的二维数组,每个数组中都创建了我的空间对象。但是现在我想把创建的空间构造函数发送到x,y位置。因为我有两层,所以当我为y
@spaces = [0...20].map (x)->
[0...20].map (y) ->
new Elements.Space()
这看起来效果很好,我有一个很好的二维数组,每个数组中都创建了我的空间对象。但是现在我想把创建的空间构造函数发送到x,y位置。因为我有两层,所以当我为y
输入map函数时,我丢失了x
变量
理想情况下,我想做以下事情:
@spaces = [0...20].map (x)->
[0...20].map (y) ->
new Elements.Space(x, y)
或者我觉得更自然的东西,比如:
for row in rows
for column in row
@spaces[row][column] = new Elements.Space(row, column)
我真的愿意接受任何更好的方法。我知道如何使用标准JavaScript,但我真的很想学习如何使用CoffeeScript。您第一次尝试使用
map
是一种有效的方法。实际上,您不会丢失x
,因为闭包。因此,您的第二个代码块没有问题:
@spaces = [0...20].map (x)->
[0...20].map (y) ->
new Elements.Space(x, y)
for循环版本也非常简单:
@spaces = for x in [0...20]
for y in [0...20]
new Elements.Space(x, y)
记住,一切都是一种表达。因此,这是可行的(可能比
map
版本更清晰)。for循环版本也不必创建数组来调用map
,而[0…20]中的for x直接转换为JavaScript for-loops。谢谢!我把我的问题翻译成了更简单的问题,最终解决了它。从我在Chrome调试器中看到的情况来看,x是未定义的。但它是有效的!