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?
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).
Scalaz 7 hat sich etwas geändert, hier ist ein weiteres Beispiel:
%Vor% 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
ziggystars Antwort ist, was ich verwenden würde, aber der Vollständigkeit halber kann Mustervergleich auch verwendet werden, zB
%Vor%Tags und Links scala case-class option