如何在CoffeeScript中缩进列表理解?

Sal*_*ene 5 indentation coffeescript

我有以下几行CoffeeScript:

names = (mail.folder for mail in @data when mail.service_name is service.name).unique()
Run Code Online (Sandbox Code Playgroud)

这条线太长了,所以它不会通过linting by CoffeeLint.

我试图打破它,但我总是得到缩进错误CoffeeLint.

缩进这个的正确方法是什么?

Aar*_*our 5

这是最可读的版本而不会过度冗长:

names =
  (for mail in @data when mail.service_name is service.name
    mail.folder).unique()
Run Code Online (Sandbox Code Playgroud)

您不能在多行上拆分列表推导,但正常的for循环也可以返回一个值,因此使用其中一个可以解决问题.如果你愿意给予额外的一行,那么循环周围就没有必要使用笨拙的括号:

names =
  for mail in @data when mail.service_name is service.name
    mail.folder
names = names.unique()
Run Code Online (Sandbox Code Playgroud)

最后,for线的缩进取决于你; 我发现我的第一个版本更具可读性,但这也是有效的:

names =
(for mail in @data when mail.service_name is service.name
  mail.folder).unique()
Run Code Online (Sandbox Code Playgroud)