0
votes

Comment fonctionne cette ligne de code spécifique?

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}


0 commentaires

3 Réponses :


2
votes

Supposons items = xs ++ liste (Y) ++ zs où tous les éléments de xs satisfont du prédicat prédicate et Y pas satisfaire an . Dans ce cas xxx

donc quelle est la ligne de code l span {_ == l.head} est en train d'extraire tous les éléments égaux de l'avant de la Liste dans la première liste emballée et tous les autres éléments dans la deuxième liste suivant .


1 commentaires

Merci pour l'explication, c'était simple et facile à comprendre.



1
votes

Eh bien, comme on peut le voir sur le Page scaladocs ... xxx

... span () divise la liste ls figure dans 2 listes . La 1ère liste, emballé , consiste en tous les éléments initiaux qui répondent à la condition de prédicat, == l.head . La 2e liste, suivant , est le reste de la liste ls 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.

Voici une expression plus concise du même algorithme. xxx


1 commentaires

Merci, votre réponse est assez facile à comprendre.



1
votes

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. xxx

ici _ est sucre syntaxique de Scala. Il est identique à l.span (e => e == l.head) . 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.

J'espère que cela aidera.


1 commentaires

@Som Rai votre accueil. Un bon moyen de dire que merci d'accepter la réponse. :RÉ