Đây là điều tôi thường gặp, nhưng tôi không biết cách làm thanh lịch. Tôi có một bộ sưu tập các đối tượng Foo. Foo có một phương thức bar() có thể trả về null hoặc một đối tượng Bar. Tôi muốn quét bộ sưu tập, gọi phương thức bar() của mỗi đối tượng và dừng lại trên phương thức đầu tiên trả về một tham chiếu thực sự và trả về tham chiếu đó từ quá trình quét.thành ngữ scala tốt nhất để tìm và trả lại
Rõ ràng:
foos.find (.! _ Bar = null) .bar
hiện các trick, nhưng kêu gọi hai lần #bar.
có sự khác biệt nào giữa điều này và sử dụng phép chiếu không? – IttayD
Bản ghi nhớ luồng [T] là sự khác biệt 'val ánh xạ = foos.elements.map (_. Bar); mapped.find (_! = null); mapped.find (_! = null) 'trả về' Một số (thanh nói 4) 'và' None' trong đó 'val ánh xạ = foos.projection.map (_. bar); mapped.find (_! = null); mapped.find (_! = null) 'trả về hai lần' Một số (thanh nói 4) '. –
'foos.view' trong Scala 2.8 trả về giống như' foos.projection' nhưng đánh giá các phần tử hai lần (không ghi nhớ). –