Coffee脚本多维数组创建

时间:2014-05-11 20:13:01

标签: arrays multidimensional-array coffeescript

所以我试图让一个多维数组在CoffeeScript中工作。我尝试过标准的Python列表理解符号,它使内部括号成为字符串或其他东西。所以我不能列表[0] [1]得到1,而是得到列表[0] [0] ='1,1'并列出[0] [1] =''

[[i, 1] for i in [1]]

使用类作为存储容器,然后抓取x和y。这给出了'undefined undefined',而不是后者的'1 1'。

class Position
    constructor:(@x,@y) ->

x = [new Position(i,1) for i in [1]]
for i in x
    alert i.x + ' ' + i.y#'undefined undefined'

i = new Position(1,1)
alert i.x + ' ' + i.y#'1 1'

非常需要能够使用点列表,我找不到一种方法来列出它们。我更喜欢使用一个简单的多维数组,但我不知道如何。

1 个答案:

答案 0 :(得分:3)

您只需使用括号(),而不是方括号,[]

来自REPL:

coffee> ([i, 1] for i in [1])
[ [ 1, 1 ] ]
coffee> [[i, 1] for i in [1]]
[ [ [ 1, 1 ] ] ]

你可以看到,使用方括号,就像在Python中一样,将生成表达式放在一个额外的列表中。

这是因为当您想要将表达式赋值给变量时,括号()实际上只存在于CoffeeScript中,因此:

coffee> a = ([i, 1] for i in [1])
[ [ 1, 1 ] ]
coffee> a[0][1]
1
coffee> b = [i, 1] for i in [1]
[ [ 1, 1 ] ]
coffee> b[0][1]
undefined

另请参阅CoffeeScript Cookbook