次の行がありCoffeeScript
ます:
names = (mail.folder for mail in @data when mail.service_name is service.name).unique()
この行は長すぎるため、 による lint を通過しませんCoffeeLint
。
私はそれを壊そうとしていますが、常にインデントエラーが発生しCoffeeLint
ます.
これをインデントする適切な方法は何ですか?
次の行がありCoffeeScript
ます:
names = (mail.folder for mail in @data when mail.service_name is service.name).unique()
この行は長すぎるため、 による lint を通過しませんCoffeeLint
。
私はそれを壊そうとしていますが、常にインデントエラーが発生し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()
どうやら、リスト内包表記を複数行に分割することは許可されていません。