scala
2016-08-08 9 views 0 likes 
0

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?

Antwort

6
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.

1

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 
} 
Verwandte Themen