2011-04-24 146 views
2

CoffeeScript列表解析與Pythons稍有不同...這些是人們喜歡返回列表解析的方式嗎?CoffeeScript列表理解/數組理解

return elem+1 for elem in [1,2,3] # returns 3+1 
return [elem+1 for elem in [1,2,3]].pop() # returns [2,3,4] 
return (elem+1 for elem in [1,2,3]) # returns [2,3,4] 

在Python,我只想寫:

return [elem+1 for elem in [1,2,3]] 

並正確返回列表,而不是列出清單,因爲這會在CoffeeScript的事情。

回答

9

以下哪種方式是人們喜歡返回列表解析的方式?

return elem+1 for elem in [1,2,3] # returns 3+1 
return [elem+1 for elem in [1,2,3]].pop() # returns [2,3,4] 
return (elem+1 for elem in [1,2,3]) # returns [2,3,4] 

好了,三個選項,肯定#3。但是,最好的風格上的選擇實際上是這樣的:

elem+1 for elem in [1,2,3] # returns [2,3,4] 

作爲函數的最後一行,任何表達expr相當於return (expr)return關鍵字非常少有必要。

+0

請注意,您不能使用此分配,即[someVar = elem + 1 for elem in [1,2,3]'得到的值爲4.惱人的是,雖然可以理解,但您仍然必須將列表理解放在括號中:'someVar =(elem + 1 for [1,2,3])'' – AJP 2013-05-11 22:21:19

2

我從來沒有使用CoffeeScript,但如果我的選項得到錯誤的結果,做一個愚蠢的[...].pop() kludge或只使用一組圓括號,我會去括號。

+0

我已經使用了CoffeeScript,這確實是基本正確的。 :)但看到我的答案進一步闡述。 – 2011-04-24 21:42:46