Linee di lettura in un ciclo foreach, una funzione cerca un valore con una chiave in un file di testo strutturato simile a CSV. Dopo aver trovato una linea specifica, è insensato continuare a leggere le righe cercando qualcosa lì. Come fermarsi in quanto non vi è alcuna istruzione break in Scala?In Scala, come interrompere la lettura delle righe da un file non appena viene raggiunto un criterio?
6
A
risposta
2
risposte precedenti per scontato che si desidera leggere le linee da un file, presumo che si desidera un modo per rompere per-loop dalla domanda. Ecco solution Si può fare in questo modo:
breakable {
for (...) {
if (...) break
}
}
9
Scala Source
classe è pigro. È possibile leggere caratteri o righe utilizzando takeWhile
o dropWhile
e l'iterazione sull'input non deve andare oltre il necessario.
6
Per espandere la risposta di Randall. Ad esempio, se la chiave è nella prima colonna:
val src = Source.fromFile("/etc/passwd")
val iter = src.getLines().map(_.split(":"))
// print the uid for Guest
iter.find(_(0) == "Guest") foreach (a => println(a(2)))
// the rest of iter is not processed
src.close()
Guarda eccezioni sulle linee vuote! –
Un buon esempio per me, ma solleva un'altra domanda: come faccio a saltare la prima riga, che è un'intestazione di tabella? – Ivan
'val iter = src.getLines(). Drop (1) .map (_. Split (": "))' – huynhjl