2014-05-20 12 views
5

IntelliJ mi dà un suggerimento su un codice seguente:Converti partita dichiarazione alla funzione parziale quando foreach viene utilizzato

val l = List(0, "1", 2, "3") 

l.foreach{_ match {case xx:Int => println(xx);case _ =>}} 

Il suggerimento è "Converti partita dichiarazione alla funzione parziale"

quando cambio la foreach a

l.foreach{case x:Int => println(x)} 

Ottengo l'eccezione scala.MatchError. Posso usare collect invece di foreach, tuttavia questo produce uno List risultante che non viene mai utilizzato.

C'è qualche modo comune su come gestirlo (qualcosa come foreach ignorando i valori non corrispondenti), o dovrei semplicemente ignorare il suggerimento?

risposta

13

Put caso di default di nuovo:

val l = List(0, "1", 2, "3") 

l.foreach { case xx:Int => println(xx); case _ => } 

IDEA sarà felice:

enter image description here

In realtà, questo è ciò che IDEA genererà se si tocca l'azione proposta (ALT + INVIO quando il punto di inserimento indica un testo ingiallito)

Problemi correlati