Wie ziehe ich Case-Klassen mit Optionen in Scala auseinander

7

Ich bin sehr neu bei Scala und ich versuche immer noch, mich an die Syntax und den Stil zu gewöhnen, also ist das wahrscheinlich eine sehr einfache Frage.

Ich arbeite mit einer Codebase, in der es viele Fallklassen gibt, die wie folgt mit Optionen gefüllt sind:

%Vor%

Wie würden Sie im obigen Beispiel sagen, wie viel Geld in Person s Pants Pocket ist, wenn sie tatsächlich Hosen tragen ... mit Taschen und wenn sie Geld haben überhaupt?

    
Adam Fraser 20.01.2012, 15:42
quelle

4 Antworten

8

Eine gute Zeit für for-comprehensions :

%Vor%

Äquivalent können Sie folgendes schreiben, für das der erste Code syntaktischer Zucker ist (einige Feinheiten werden ignoriert):

%Vor%

(Ich bin mir nicht ganz sicher, ob Sie den letzten Ausdruck mit den _ Wildcards schreiben können, wie ich es tat).

    
ziggystar 20.01.2012, 16:05
quelle
12

Scalaz 7 hat sich etwas geändert, hier ist ein weiteres Beispiel:

%Vor%     
Channing Walton 05.06.2013 20:31
quelle
6

In der Frage wurde die Änderung der Daten nicht erwähnt, aber wenn Sie dies tun müssen, finden Sie schnell, dass die Scala-Bibliothek nicht über die Tools verfügt, um dies einfach zu machen (wenn die Daten unveränderlich sind). . Wenn Sie dies noch nicht erlebt haben, versuchen Sie, eine Funktion zu schreiben, die das value des Cash eines Person ersetzt oder modifiziert, indem Sie die in der Frage definierten Typen verwenden.

Wie in Tony Morris ' asymmetrischen Objektiven in Scala beschrieben, Linsen sind eine angemessene Lösung für dieses Problem.

Hier ist ein Beispiel, wie wir% c_de% der value einer Person mit den Implementierungen Cash und Lens (partielle Linse) von Ben James 02.04.2012 14:44

quelle
2

ziggystars Antwort ist, was ich verwenden würde, aber der Vollständigkeit halber kann Mustervergleich auch verwendet werden, zB

%Vor%     
Kristian Domagala 23.01.2012 07:22
quelle

Tags und Links