Đây là phiên bản có thể đọc được hầu hết đó mà không nhận được quá dài:
names =
(for mail in @data when mail.service_name is service.name
mail.folder).unique()
Bạn không thể chia comprehensions danh sách trên nhiều dòng, nhưng một bình thường đối với vòng lặp cũng có thể trả về một giá trị, vì vậy sử dụng một trong những giải quyết vấn đề. Nếu bạn sẵn sàng cấp thêm một dòng, không có nhu cầu sử dụng dấu ngoặc đơn vụng quanh vòng lặp:
names =
for mail in @data when mail.service_name is service.name
mail.folder
names = names.unique()
Cuối cùng, thụt đầu dòng của dòng for
là tùy thuộc vào bạn; Tôi thấy phiên bản đầu tiên của mình dễ đọc hơn nhưng điều này cũng hợp lệ:
names =
(for mail in @data when mail.service_name is service.name
mail.folder).unique()
Nguồn
2012-07-02 01:02:04
Tôi nhận * PARSE ERROR ON LINE 1: UNEXPECTED 'INDENT' * trên giải pháp đầu tiên của bạn. Giải pháp thứ hai của bạn dường như hoạt động tốt. – jackwanders
@jackwanders Có, bạn đúng, tôi không biết làm thế nào tôi bị mất rằng: S. Tôi đã sửa nó ngay bây giờ với một bộ nối tiếp dòng '\'. Nó có hoạt động theo cách đó không? (liên kết hiển thị điểm đến một exmaple cập nhật trong coffeescript.org) – epidemian
Tôi thích \ solution: list comprehension + more readable – Alexander