Quando ho iniziato a guardare Scala, mi è piaciuto l'aspetto delle incomprensioni. Sembravano un po 'come i cicli foreach a cui ero abituato da Java 5, ma con restrizioni funzionali e molta dolcezza sintattica.Le incomprensioni di Scala: caratteristica vitale o zucchero sintattico?
Ma, come ho assorbito lo stile di Scala, trovo che ogni volta che potrebbe utilizzare un per-comprension sto usando map
, flatMap
, filter
, reduce
e foreach
invece. L'intenzione del codice mi sembra più chiara in questo modo, con meno potenziali sorprese nascoste, e di solito sono anche codice più corto.
Per quanto ne so, le incomprensioni sono sempre compilate in questi metodi comunque, quindi mi chiedo: per cosa sono effettivamente? Mi manca qualche rivalutazione funzionale (non sarebbe la prima volta)? Le incomprensioni fanno qualcosa che le altre caratteristiche non possono o dovrebbero essere perlomeno più goffi? Brillano sotto un particolare caso d'uso? È davvero solo una questione di gusti personali?
Questo è quasi un duplicato di http://stackoverflow.com/questions/1052476/can-qualcuno-spiegare-Scalas-rendimento. Quella domanda si chiedeva che cosa fosse "yield", questo si chiede quale sia il suo scopo. Le risposte sono circa le stesse. –