E 'possibile definire un valore (in a if) in a per comprensione in Scala per l'uso in yield.Puoi definire un valore (in a if) in a per comprensione in Scala per uso in yield
Voglio fare questo per evitare una valutazione potenziale due volte.
Un esempio da illustrare.
for {
bar <- bars if expensive(bar) > 5
} yield (bar, expensive(bar))
Funziona solo se 'costosi (bar)' tipo rispetto per-la comprensione interfaccia (mappa, flatMap, filtro, con filtro ecc.). L'autore della domanda non ha suggerito di farlo. E se lo fa, restituirà un risultato diverso rispetto al codice fornito dall'autore. – pedrofurla
@pedrofurla OK. costoso() potrebbe non restituire la raccolta. Quindi cambia "<-" a "=" – Don
Hm ... non sapevo che potevi omettere il 'val' lì. Bello. Ancora, '<-' e' = 'hanno significati completamente diversi, anche se restituisce una collezione. A proposito, la raccolta non è necessaria, solo l'interfaccia 'discutibilmente monadica'. – pedrofurla