ich stark fördern würden Sie nicht formValues.get("whatever")
zu verwenden, zum Teil, weil die Syntax sehr verwirrend-es sieht aus wie Sie anrufen get
mit einem Schlüsselargument (wie zum Beispiel auf einer Karte), wenn Sie wirklich anrufen get
auf der Option
(das ist eine unsichere Operation-Sie sollten grundsätzlich von get
auf Option
grundsätzlich immer bleiben) und dann apply
auf der resultierenden Karte (auch unsicher). Dieses Durcheinander ist Scalas Schuld, nicht deine, aber du willst immer noch vermeiden, hineinzugehen.
Stattdessen können Sie exists
auf dem Option
zusammen mit contains
auf der Karte verwenden. Hier ist ein etwas vereinfachtes Beispiel:
val containsKey = formValues.exists(_.contains(key))
Dies wird true
nur zurück, wenn die Option
nicht leer und die Karte enthält den Schlüssel.
Ein noch besserer Ansatz ist es, die if
-Anweisung wie diese zu vermeiden:
val os: Option[Seq[String]] = for {
m <- formValues
v <- m.get(key)
} yield v
os.foreach { v => \\ do something with the value }
Hier haben wir mit einem Option
am Ende, die den Wert enthält, auf den key
, wenn die ursprüngliche Option
nicht leer ist und die Karte enthält diesen Schlüssel.