在 Scala 中将字符串转换为整数的最简洁方法?

Most concise way to convert string to integer in Scala?

在Java中,我可以使用如下两个语句将字符串转换为整数,从而能够处理异常:

// we have some string s = "abc"
int num = 0;
try{ num = Integer.parseInt(s); } catch (NumberFormatException ex) {}

然而,我在Scala中找到的方法总是使用如下try-catch/match-getOrElse的方法,它包含几行代码,看起来有点冗长。

// First we have to define a method called "toInt" somewhere else
def toInt(s: String): Option[Int] = {
  try{
    Some(s.toInt)
  } catch {
    case e: NumberFormatException => None
  }
}

// Then I can do the real conversion
val num = toInt(s).getOrElse(0)

这是在 Scala 中将字符串转换为整数的唯一方法(能够处理异常)还是有更简洁的方法?

考虑

util.Try(s.toInt).getOrElse(0)

这将在捕获可能的异常时传递一个整数值。因此,

def toInt(s: String): Int = util.Try(s.toInt).getOrElse(0)

或者如果 Option 是首选,

def toInt(s: String): Option[Int] = util.Try(s.toInt).toOption

其中 None 如果转换失败则交付。