Manchmal möchte ich den Wert zurückgeben, der eine Eigenschaft eines in Option eingeschlossenen Objekts ist, aber ich kann das nicht einfach mit getValue.orElse(otherValue)
machen.
Zum Beispiel mappe ich Eigenschaften inline und ich möchte ein Muster wie object.get.property.orElse("")
verwenden. Aber das vorhergehende kompiliert nicht. Wie kann ich auf diese Eigenschaft zugreifen und trotzdem eine optionale Syntax beibehalten?
Sie können map()
verwenden, um dies zu erreichen. Es wird offensichtlich, wenn Sie anfangen, über Option[T]
wie einen Container vom Typ T
zu denken, der 0 oder 1 Element enthalten kann:
Außerdem, wenn Sie eine verschachtelte Struktur von Option
s:
Sie können verschachtelte Option
mit flatMap
:
Oder Sie können filter()
verwenden, um Some()
in None
umzuwandeln, wenn der in Some
enthaltene Wert einige Kriterien nicht erfüllt:
Verwenden Sie map()
, um das option-ähnliche Muster beizubehalten.
Sie müssen zum Beispiel die Eigenschaft name
eines field
-Objekts erhalten. Wenn das Feld jedoch tatsächlich None
ist, können Sie eine leere Zeichenfolge zurückgeben. So:
field.map(_.name).getOrElse("")
Und es im größeren Bild verwenden:
%Vor%Tags und Links scala