6
votes

Multiples affectation dans Scala sans utiliser un tableau?

J'ai une entrée quelque chose comme ceci: "1 2 3 4 5" code>.

Ce que je voudrais faire, est de créer un ensemble de nouvelles variables, laisse a code> est la première de la séquence, B code> le second, et xs code> le reste en tant que séquence (évidemment je peux le faire dans 3 lignes différentes, mais je Voudrais utiliser plusieurs missions). P>

Un peu de recherche m'a aidé en trouvant le Modèles de séquence à droite à droite , que j'ai pu utiliser: p> xxx pré>

Ce que je ne comprends pas, c'est que ça ne marche pas si je l'essaie avec un tuple? Je reçois une erreur pour ceci: p> xxx pré>

Le message d'erreur est le suivant: p>

<console>:1: error: illegal start of simple pattern


0 commentaires

5 Réponses :


11
votes

Réponse simple
def unapply[T1, T2, T3](x: Product3[T1, T2, T3]): Option[Product3[T1, T2, T3]] =
  Some(x)


0 commentaires

2
votes

Je ne suis pas un expert en Scala par aucun moyen, mais je pense que cela pourrait avoir à voir avec le fait que les tuples de Scala ne sont que du sucre syntatique pour les classes allant du tuple2 à tuple22.

Signification, tuples à Scala ne sont pas des structures flexibles telles que dans Python ou dans d'autres langues du tri, de sorte qu'il ne peut donc pas vraiment créer un tuple avec un inconnu a priori taille.


1 commentaires

Ahh, maintenant vous en parlez, je peux aussi rappeler que j'ai lu à ce sujet (je me souviens de tuple22 , mais le point est le même, il est strictement limité).



18
votes

Autres réponses Vous dire pourquoi vous ne pouvez pas utiliser des tuples, mais que des tableaux sont maladroits à cette fin. Je préfère les listes: xxx


1 commentaires

C'est plus propre



7
votes

La réponse est la suivante:

c = "3" vs. c = List("3","4","5")


1 commentaires

J'ai affiché apparemment quelques secondes après @rex. Bien, bon de savoir que j'avais la même pensée qu'un scala "lourd" ;-)



1
votes

Nous pouvons utiliser la correspondance de motif pour extraire les valeurs de la chaîne et l'attribuer à plusieurs variables. Cela nécessite deux lignes cependant.

Modèle dit qu'il y a 3 chiffres ([0-9]) avec espace entre les deux. Après le 3ème numéro, il peut y avoir du texte ou non, que nous ne nous soucions pas de (. *). xxx

sortie xxx


0 commentaires