Wenn ich dies tun wirft es eine Ausnahme:Wie sicher eine Zeichenfolge aufgeteilt und lassen für beide Werte
"".split('=')(1)
Gibt es eine idomatic Weg, um diese Art von Operation sicher in scala zu tun?
Wenn ich dies tun wirft es eine Ausnahme:Wie sicher eine Zeichenfolge aufgeteilt und lassen für beide Werte
"".split('=')(1)
Gibt es eine idomatic Weg, um diese Art von Operation sicher in scala zu tun?
scala> "".split('=').lift(1)
res0: Option[String] = None
scala> "a=b".split('=').lift(1)
res2: Option[String] = Some(b)
Beachten Sie, dass Array
nach implizite Konvertierung von Indizes auf Werte eine Teilfunktion ist. Sie können lift
jede Teilfunktion, so dass anstelle eines Werts, oder eine Ausnahme, wenn es nicht bei dem angegebenen Argument definiert ist, Some(value)
bzw. None
zurückgegeben wird.
Mögliche Lösung:
s.split("=") match {
case [email protected](_, _) =>
Some(a)
case _ =>
None
}
Aber normalerweise fügen Sie eine gewisse Logik:
s.split("=") match {
case Array(x, y) =>
Some(x.toInt * y.toDouble)
case _ =>
None
}