Aus der Liste der E-Mails muss ich 2 Werte erhalten:
Was ist der idiomatische Weg, dies in Scala zu kodieren? Bisher habe ich:
%Vor% BEARBEITEN: Warum gibt es Any
: Wir verwenden GSON für die json-Serialisierung und konvertieren alle Sammlungen intern in Java-Sammlungen und übergeben sie an jsonSerializationContext.serialize , die java.lang.Object als Argument haben, so passt Any
uns gut.
Ich würde wahrscheinlich nur drop
das erste Element (wenn Sie sicher sind, dass das erste Element immer die primäre E-Mail ist). Wie so:
Dies ergibt keine Ausnahme, wenn die primäre E-Mail nicht in der Liste enthalten ist (die Liste ist leer).
Erlernen Sie einen scalaz . All dies ist in einem Anruf verfügbar:
%Vor%Demonstration:
%Vor%Wenn nicht leer
%Vor%falls leer:
%Vor% Der <^>
-Aufruf lautet: Wenn diese Liste leer ist, geben Sie die Null für den Typ zurück, der durch die Rückgabetyp-Funktion definiert ist. Wenn die Liste nicht leer ist, wenden Sie die Funktion darauf an
Der Wert nel
ist ein NonEmptyList
, den ich sicher head
und tail
aufrufen kann, ohne befürchten zu müssen, dass eine Ausnahme ausgelöst wird. Meine Funktion gibt (Option[A], List[A])
Natürlich ist die Null dafür nur (None, Nil)
für jede A
Für Sequenzen können Sie eine Musteranpassung vornehmen, um den Kopf und den Rest als
zu erhalten %Vor% Wenn Sie Scala List
s verwenden, ist es noch schöner:
Siehe auch Wie kann man Match-Sequence-Comprehensions idiomatisch gestalten? und Scala-Muster, das zu anderen Sequenzen als Listen passt .
Genau wie Reuben würde ich Sie davon abhalten, Map[String,Any]
oder ähnliche Konstruktionen zu verwenden. Du wirfst alles weg, was Scala's System dir gibt. Es ist einfach, Fehler zu bekommen, die schwer zu verfolgen sind. Stellen Sie es vielleicht als eine andere Frage - beschreiben Sie, warum Sie Map[String,Any]
jetzt benutzen und fragen Sie, wie es verbessert werden könnte.
Tags und Links scala