Ich finde mich oft mit einem Option[T]
für einen Typ T
und möchte den Wert der Option gegen einen Wert testen. Zum Beispiel:Eine bessere Möglichkeit, den Wert einer Option zu testen?
val opt = Some("oxbow")
if (opt.isDefined && opt.get == "lakes")
//do something
Der folgende Code entspricht und beseitigt die Notwendigkeit, die Existenz des Wertes der Option zu testen
if (opt.map(_ == "lakes").getOrElse(false))
//do something
Allerdings scheint dies weniger lesbar zu mir. Andere Möglichkeiten sind:
if (opt.filter(_ == "lakes").isDefined)
if (opt.find(_ == "lakes").isDefined) //uses implicit conversion to Iterable
Aber ich glaube nicht, diese klar zum Ausdruck bringen, die Absicht entweder die besser wäre als:
if (opt.isDefinedAnd(_ == "lakes"))
Hat jemand einen besseren Weg, diesen Test zu tun?
Duh verwenden können! Manchmal kann ich extrem dumm sein –
Nun, es passiert mir die ganze Zeit ;-) –
Manchmal ist die einfachste Lösung die beste :) –