如何在 CoffeeScript 中缩进列表理解



我有以下CoffeeScript行:

names = (mail.folder for mail in @data when mail.service_name is service.name).unique()

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

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

进的正确方法是什么?

这是最易读的版本,不会太长:

names =
  (for mail in @data when mail.service_name is service.name
    mail.folder).unique()

您不能在多行上拆分列表推导式,但法线 for 循环也可以返回一个值,因此使用其中一个可以解决问题。 如果你愿意授予额外的行,则不需要在循环周围使用尴尬的括号:

names =
  for mail in @data when mail.service_name is service.name
    mail.folder
names = names.unique()

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

names =
(for mail in @data when mail.service_name is service.name
  mail.folder).unique()

这编译得很好:

names = (mail.folder for mail in @data 
         when mail.service_name is service.name).unique()

您还可以反转for ... when和表达式:

names = (for mail in @data when mail.service_name is service.name
           mail.folder).unique()
显然不允许将

列表理解拆分为多行:

https://stackoverflow.com/a/8553292

相关内容

  • 没有找到相关文章

最新更新