如果我这样做会引发异常:
"".split('=')(1)
是否有一种在scala中安全地进行此类操作的自觉方式?
答案 0 :(得分:8)
scala> "".split('=').lift(1)
res0: Option[String] = None
scala> "a=b".split('=').lift(1)
res2: Option[String] = Some(b)
请注意,隐式转换后的Array
是从索引到值的部分函数。您可以lift
任何部分函数,以便代替值或异常(如果未在给定参数中定义),它将分别返回Some(value)
或None
。
答案 1 :(得分:1)
可能的解决方案:
s.split("=") match {
case a@Array(_, _) =>
Some(a)
case _ =>
None
}
但通常你会添加一些逻辑:
s.split("=") match {
case Array(x, y) =>
Some(x.toInt * y.toDouble)
case _ =>
None
}