12
votes

Retour de la queue si la liste n'est pas vide ou renvoie la liste vide

Dans la liste des courriels, je dois obtenir 2 valeurs:

  • Option de la tête de la liste
  • liste des autres

    Quel est le moyen idiomatique de coder cela dans Scala? Jusqu'à présent, j'ai: xxx

    éditer: pourquoi il y a n'importe quel : nous utilisons gson pour la sérialisation JSON et convertissons toutes les collections à Java collections et transmettez-les à jsonserializationContext.Serialize , qui ont Java.lang.Object comme argument, donc tout nous convient tout à fait.


0 commentaires

5 Réponses :


21
votes

Je voudrais probablement juste goutte le premier élément (si vous êtes sûr que le premier élément est toujours le courrier électronique principal). Comme: xxx

Cela ne donne pas d'exception si le courrier électronique principal n'est pas dans la liste (la liste est vide).


0 commentaires

8
votes

Apprenez-vous un Scalaz . Tout cela est disponible en un appel: xxx

démonstration: xxx

si non vide xxx

si vide: xxx

Comment cela fonctionne-t-il?

Le <^> Dit: Si cette liste est vide, renvoyez le type zéro pour le type défini par la fonction Type de retour à droite. Si la liste est non vide, appliquez la fonction sur

la valeur nel est un non indépartie , que je peux appeler en toute sécurité tête et queue sans craindre qu'ils vont jeter une exception. Ma fonction renvoie un (option [a], liste [A])

bien sûr, le zéro pour cela est juste (aucun , Nil) pour tout a


1 commentaires

Est-ce encore une chose? L'opérateur ne semble plus exister.



0
votes

Je suggère xxx

ceci laisse le premier courrier électronique dans une liste non un option , mais une carte , Produit] ne va pas vous faire beaucoup de bien de toute façon, n'est-ce pas?


0 commentaires

1
votes

Carte [String, tout]? Vous pourriez aussi bien simplement écrire php ...; -)

Voici une autre façon: xxx

vraiment - je n'aime pas toute l'approche - je ferais quelque chose comme ceci: xxx


0 commentaires

2
votes

Pour les séquences, vous pouvez associer la tête et le reste comme xxx

si vous utilisez la liste Scala's's S, il est même plus agréable: xxx

voir aussi Quel est le moyen idiomatique de modèles de séquence de séquence de motifs? et Scala Motif correspondant sur des séquences autres que les listes .


Tout comme Ruben, je ' D STORTY vous décourageez d'utiliser mappe [chaîne, n'importe quel] ou des constructions similaires. Vous jetez tout ce que le système de type Scala vous donne. Il est facile d'obtenir des erreurs très difficiles à tracer. Demandez peut-être une autre question - décrire pourquoi vous utilisez mappe [chaîne, tout] maintenant et demandez comment il pourrait être amélioré.


0 commentaires