Question

Je suis nouveau à la scala et que vous souhaitez obtenir la chose suivante fait à l'aide de la carte, flatMap, et/ou pour la compréhension.

J'ai une liste de listes l = List[List[T]].Par exemple, l = [[1,2,3],[2,4,6,4],[3,4,6,2,3]].Notez que chaque liste à l'intérieur de l peut avoir une durée variable.

Maintenant, j'ai val x: List[Int] = [1,2,3] et je veux faire une opération sur x et l qui renvoie [[1,1,2,3], [1,2,4,6,4], [1,3,4,6,2,3], [2,1,2,3], [2,2,4,6,4], [2,3,4,6,2,3], [3,1,2,3], [3,2,4,6,4], [3,3,4,6,2,3]] (l'ordre des sous-listes n'a pas d'importance).

Je me sens comme je devrais utiliser la carte ou flatMap ou de boucle pour le faire, mais après une longue période d'essai je ne peux même pas obtenir le type correct.Quelqu'un peut-il m'aider à ce sujet?

Était-ce utile?

La solution

scala> val ls = List(List(1,2,3),List(2,4,6,4),List(3,4,6,2,3))
ls: List[List[Int]] = List(List(1, 2, 3), List(2, 4, 6, 4), List(3, 4, 6, 2, 3))

scala> val xs: List[Int] = List(1,2,3)
xs: List[Int] = List(1, 2, 3)

scala> for(x <- xs; l <- ls) yield x +: l
res22: List[List[Int]] = List(List(1, 1, 2, 3), List(1, 2, 4, 6, 4), List(1, 3, 4, 6, 2, 3), List(2, 1, 2, 3), List(2, 2, 4, 6, 4), List(2, 3, 4, 6, 2, 3), List(3, 1, 2, 3), List(3, 2, 4, 6, 4), List(3, 3, 4, 6, 2, 3))

Autres conseils

x.flatMap(i => l.map(i::_))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top