Sto cercando di capire per comprensioni a Scala, e ho un sacco di esempi che ho sorta di capire ...Scala() vs per {}
Una cosa che sto attraversando un periodo difficile capire è per() vs per {}. Ho provato entrambi, e sembra di poter fare una cosa in una, ma si rompe nell'altra.
Ad esempio, questa non funziona:
def encode(number: String): Set[List[String]] =
if (number.isEmpty) Set(List())
else {
for (
split <- 1 to number.length
word <- wordsForNum(number take split)
rest <- encode(number drop split)
) yield word :: rest
}.toSet
Tuttavia, se si cambia a {}, lo fa compilare:
def encode(number: String): Set[List[String]] =
if (number.isEmpty) Set(List())
else {
for {
split <- 1 to number.length
word <- wordsForNum(number take split)
rest <- encode(number drop split)
} yield word :: rest
}.toSet
Questi esempi sono da una classe Coursera Sono prendendo. Il professore non ha menzionato il "perché" nel video & mi stavo chiedendo se qualcun altro lo sa.
Grazie!
Grazie per le risposte davvero approfondite - non ho la necessità di collegare {} con la multipla vs esempi linea singola I stava lavorando. – anonygrits