voglio generare una combinazione di alcuni valori, come nel seguente codice:Idiomatic Scala modo di combinazioni che generano pigramente
object ContinueGenerate {
val foods = List("A", "B", "C")
val places = List("P1", "P2", "P3")
val communities = List("C1", "C2", "C3", "C4")
case class Combination(food: String, place: String, community: String)
def allCombinations() = {
for {
food <- foods; place <- places; community <- communities
} yield Combination(food, place, community)
}
def main(args: Array[String]) {
allCombinations foreach println
}
}
Tuttavia, il problema di questo approccio è che, tutti i dati vengono generati in una sola volta. Questo è un grosso problema quando la dimensione di foods
, places
e communities
diventa molto grande. Inoltre potrebbero esserci altri parametri oltre a questi tre.
Quindi voglio essere in grado di generare combinazioni, in uno stile di continuazione, tale che una combinazione venga generata solo quando viene richiesta.
Quale sarebbe un modo idiomatico di farlo in Scala?