Je suis un débutant à Scala et je suis récemment passé par http: // apériodique.net/phil/scala/s-99/p09.scala et essayait de résoudre le problème.
Question: emballer des doublons consécutifs des éléments de liste dans les sublistes. Si une liste contient des éléments répétés, ils doivent être placés dans des sublistes séparés. P>
val(packed, next) = l span {_ == l.head}
3 Réponses :
Supposons donc quelle est la ligne de code items = xs ++ liste (Y) ++ zs code> où tous les éléments de
xs code> satisfont du prédicat
prédicate code> et
Y code> pas em> satisfaire
an code>. Dans ce cas
l span {_ == l.head} code> est en train d'extraire tous les éléments égaux de l'avant de la Liste dans la première liste
emballée code> et tous les autres éléments dans la deuxième liste
suivant code>. p> p>
Merci pour l'explication, c'était simple et facile à comprendre.
Eh bien, comme on peut le voir sur le Page scaladocs ... ... Voici une expression plus concise du même algorithme. p> span () code> divise la liste
ls code> figure dans 2 listes . La 1ère liste,
emballé code>, consiste en tous les éléments initiaux qui répondent à la condition de prédicat,
== l.head code>. La 2e liste,
suivant code>, est le reste de la liste
ls code> qui ne l'a pas fait dans le 1er groupe, c'est-à-dire le 1er élément qui n'a pas rencontré la condition de prédicat et tout après cela. p>
Merci, votre réponse est assez facile à comprendre.
La première méthode de la portée crée simplement deux collections, qui satisfont à la condition et à la seconde qui ne le fait pas. ici J'espère que cela aidera. P> P> _ code> est sucre syntaxique de Scala. Il est identique à
l.span (e => e == l.head) code>.
Comme Scala est très concis, il fournit des sucres syntaxiques. Vous n'avez pas besoin d'utiliser le nom de variables comme e. La méthode de la plage reçoit des valeurs d'une liste et applique le filtre à celui-ci. Il filtre tous les éléments d'une liste dans une seule collection correspondant à la valeur du premier élément de la liste. P>
@Som Rai votre accueil. Un bon moyen de dire que merci d'accepter la réponse. :RÉ