Si vous attendez de pouvoir "aplatir" List(1, 2, List(3,4), 5)
dans List(1, 2, 3, 4, 5)
, alors vous besoin de quelque chose comme:
implicit def any2iterable[A](a: A) : Iterable[A] = Some(a)
Avec:
val list: List[Iterable[Int]] = List(1, 2, List(3,4), 5) // providing type of list
// causes implicit
// conversion to be invoked
println(list.flatten(itr => itr)) // List(1, 2, 3, 4, 5)
EDIT: ce qui suit a été dans ma réponse initiale jusqu'à ce que l'OP clarifie sa question dans un commentaire sur la réponse de Mitch
Que faites-vous s'attendre à se produire lorsque vous flatten
un List[Int]
? Vous attendez-vous à ce que la fonction additionne les Int
dans le List
? Si oui, vous devriez regarder les nouvelles fonctions de aggegation dans 2.8.x:
val list = List(1, 2, 3)
println(list.sum) //6
J'ai été intéressé par votre réponse originale. Pourtant, je ne peux pas comprendre pourquoi cela doit être si lourd. – IttayD
lourd? Pourquoi essayez-vous d'aplatir une liste éventuellement plate? comment est-ce que scala est supposé savoir comment vous voulez aplatir une liste remplie de quelque chose? – geowa4
def aplat (l: Liste [Tout]): Liste [Tout] = l flatMap { cas l: Liste [_] => aplatir (l); case e => Liste (e); } – IttayD