nope, sarebbe l'equivalente di usare un continue dentro un if, non
vale sintatticamente
> Ho tentato di fare qualcosa del genere:
>
> def process_lines ( fname : String ) = {
> val bf = new BufferedReader( new FileReader(fname) )
> var line = bf.readLine()
> while ( line != null ) {
> yield line
> line = bf.readLine()
> }
> }
>
> Ma non funziona. L'idea era di separare la logica di scansione del
> file da quella di processing.
purtroppo lo yield in scala non funziona così, è solo un pezzo della
for comprehension
> Alla fine ho risolto cosi:
>
> def process_lines ( fname : St: ring, f (String)=> Unit ) = {
> val bf = new BufferedReader( new FileReader(fname) )
> var line = bf.readLine()
> while ( line != null ) {
> f(line)
> line = bf.readLine()
> }
> }
>
> ma mi è rimasto il dubbio se il primo metodo non possa funzionare ...
vedi sopra, yield confonde perché si chiama come il costrutto di
ruby/python/c# ma in realtà non c'entra molto, è solo syntax sugar
nelle for comprehension.
Comunque io.Source e io.Source.getLines ti dannno degli Iterable
quindi forse non ti serve :)
Source è il kitchen sink dell'input, da quel che ho visto. Non mi
piace moltissimo, specie perché non c'è un equivalente output ma
meglio che new X( new Y(new Z))) :)
> Guardando il sorgente di source ho approfondito anche il 'protocollo
> iteratori' in Scala,
> che era quello a cui miravo con il mio esercizio.
E non ci racconti niente? :)