2015-05-20 15 views
7

Come devo scrivere il codice, quando non mi interessa il valore restituito.Scala: ignora il valore di ritorno futuro, ma li tiene in catena

Esempio:

for { 
    a <- getA // I do not care about a, but I need to wait for the future to finish 
    b <- getB 
} yield (b) 
+5

Proprio così, davvero .. Tu * potresti * wr ite '_ <- getA' per sottolineare che non ti interessa il risultato di' getA', ma funzionalmente sono uguali. –

risposta

9

Ti piace questa

for { 
    _ <- getA 
    b <- getB 
} yield (b) 
+0

Grazie per la risposta. Puoi dirmi, a cosa serve l'uso di _? –

+0

È un jolly al posto di un parametro formale. Vedi Scala Reference, Sez. 6.23. – JimN

2

Oppure, se non una per il ventilatore di comprensione, può fare

getA.flatMap(_ => getB) 

Ma penso che la maggior parte delle persone che voteranno per la comprensione

+1

b.map (res => res) è uguale a b.map (identità) – mohit

+0

@mohit genio aggiungendo .. non l'ho mai usato ancora – bwawok

+0

Solo 'getA.flatMap (_ => getB)' dovrebbe essere sufficiente (per ogni caso sensato 'getB.map (identity)' dovrebbe comportarsi come 'getB'). –