Ich habe folgende für Yield-Schleife, die in einem boolean nimmt und soll entweder einig (string) oder None ergeben, auf der boolean abhängig:Kann eine Scala für Rendite keine zurückgeben, wenn ich eine Option dazu gebe?
val theBoolean = false
val x: Option[String] =
for {
theArg <- theBoolean
} yield {
if (theArg) {
"abc"
} else {
None
}
}
Dies funktioniert gut, wenn theBoolean
tatsächlich eine Boolesche wie false
ist. Allerdings, wenn ich wollte in einem passiere Option[Boolean]
:
val theBoolean = Some(false)
es wie Scala scheint automatisch wendet einen Teil() Wrapper zur Keiner Rückkehr - ich eine Beschwerde erhalten, dass „Expression von Typ Option [Serializable] nicht konform zum erwarteten Typ Option [String] "(wobei None nicht die Serialisable ist). Die Ausbeute ist vollkommen zufrieden mit der gleichen Zeichenfolge Rückkehr aber (es keine Option werden [Option [Zeichenfolge]]
Wie würde ich zurückgeben Keiner in diesem Fall?
Ich entdecken, dass None.get tatsächlich macht den Compiler glücklich. Aber es scheint komisch, es so zu benutzen. – Nathan
Was versucht dieser Code zu erreichen? –
Eine Option wird übergeben - unter bestimmten Bedingungen möchte ich eine Zeichenfolge daraus extrahieren, aber unter anderen Bedingungen möchte ich, dass sie Keine ist. – Nathan