CoffeeScript列表理解/数组理解

时间:2011-04-24 19:40:50

标签: coffeescript

CoffeeScript列表推导与Pythons略有不同......其中哪些是人们喜欢返回列表推导的方式?

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中一样。

2 个答案:

答案 0 :(得分: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)。 <{1}}关键字很少需要。

答案 1 :(得分:2)

我从来没有使用过CoffeeScript,但是如果我的选项得到了错误的结果,做了一个愚蠢的[...].pop() kludge或只是使用一组括号,我会去括号。