CoffeeScript列表理解/数组理解

CoffeeScript列表理解/数组理解,coffeescript,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,

咖啡脚本列表的理解与蟒蛇略有不同。。。以下哪一种是人们喜欢返回列表理解的方式

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

我从来没有使用过CoffeeScript,但是如果我的选项得到错误的结果,执行愚蠢的
[…].pop()
kludge或仅仅使用一组括号,我会选择括号

以下哪一种是人们喜欢返回列表理解的方式

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]
嗯,在三个选项中,当然是三个。但最好的风格选择实际上是:

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

作为函数的最后一行,任何表达式
expr
都等效于
return(expr)
return
关键字很少是必需的。

我用过CoffeeScript,这基本上是正确的。:)但请参阅我的答案以进一步阐述。请注意,您不能使用此方法赋值,即[1,2,3]中的元素的
someVar=elem+1
的值为4。令人烦恼的是,尽管可以理解,您仍然必须将列表理解放在括号中,如:
someVar=(elem+1表示[1,2,3]中的elem])