Có thể xác định một giá trị (trong một if) trong một đối tượng để hiểu trong Scala để sử dụng trong lợi nhuận.Bạn có thể xác định một giá trị (trong một if) để hiểu trong Scala để sử dụng trong sản lượng
Tôi muốn thực hiện việc này để tránh đánh giá tốn kém tiềm năng hai lần.
Ví dụ minh họa.
for {
bar <- bars if expensive(bar) > 5
} yield (bar, expensive(bar))
này chỉ hoạt động nếu 'đắt (bar)' kiểu tôn trọng-hiểu giao diện của (bản đồ, flatMap, bộ lọc, withFilter vv). Tác giả của câu hỏi đã không đề nghị nó. Và nếu có, nó sẽ trả về một kết quả khác với mã được cung cấp bởi tác giả. – pedrofurla
@pedrofurla OK. đắt tiền() có thể không trả lại bộ sưu tập. Vì vậy, thay đổi "<-" thành "=" – Don
Hm ... không biết bạn có thể bỏ qua 'val' ở đó. Tốt đẹp. Tuy nhiên, '<-' và' = 'có ý nghĩa hoàn toàn khác, ngay cả khi nó trả về một tập hợp. BTW, bộ sưu tập là không cần thiết, chỉ có giao diện 'cho là monadic'. – pedrofurla