所以我试图让一个多维数组在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'
非常需要能够使用点列表,我找不到一种方法来列出它们。我更喜欢使用一个简单的多维数组,但我不知道如何。
答案 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