Czy jest możliwe zdefiniowanie wartości (w a jeśli) w celu zrozumienia w Scala do wykorzystania w wydajności.Czy można zdefiniować wartość (w a jeśli) w celu zrozumienia w Scala do użytku z wydajnością
Chcę to zrobić, aby uniknąć potencjalnie kosztownej oceny dwa razy.
Przykład do zilustrowania.
for {
bar <- bars if expensive(bar) > 5
} yield (bar, expensive(bar))
Zadziała tylko jeśli 'drogie (bar)' rodzaj szacunku dla-zrozumieniem interfejsu użytkownika (mapa, flatMap, filter, withFilter itp.). Autor pytania nie sugerował tego. A jeśli tak, zwróci inny wynik niż kod podany przez autora. – pedrofurla
@pedrofurla OK. expensive() może nie zwrócić kolekcji. Więc zmień "<-" na "=" – Don
Hm ... nie wiedziałeś, że możesz pominąć tamten "val". Miły. Mimo to '<-' i' = 'mają zupełnie inne znaczenie, nawet jeśli zwraca kolekcję. BTW, zbieranie nie jest konieczne, tylko interfejs "prawdopodobnie monadyczny". – pedrofurla