2014-05-11 211 views
0

所以我試圖讓一個多維數組在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' 

能夠使用點列表是非常必要的,我找不到一個方法來列出它們。我寧願使用一個簡單的多維數組,但我不知道如何。

回答

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