如何将Option [String]转换为Option [Int]?

Gok*_*u__ 7 json scala

我正在阅读并解析一个json文件.json文件的一个字段是Nullable.它要么返回一串数字,要么返回Null.我需要将字符串转换为int.我能够通过以下代码从String转换为Option [Int],但无法从Option [String]转换为Option [Int]

 def toInt(userId: String):Option[Int] = {
  try {
    Some(userId.toInt)
  } catch {
    case e:Exception => None
  }
}

val user = toInt("abc")
Run Code Online (Sandbox Code Playgroud)

我需要做哪些改变?

Chr*_*tin 15

import util.Try

def toInt(o: Option[String]): Option[Int] =
  o.flatMap(s => Try(s.toInt).toOption)
Run Code Online (Sandbox Code Playgroud)

例子:

scala> toInt(None)
res0: Option[Int] = None

scala> toInt(Some("42"))
res1: Option[Int] = Some(42)

scala> toInt(Some("abc"))
res2: Option[Int] = None
Run Code Online (Sandbox Code Playgroud)


Iva*_*iuc 6

Option(userId).map(_.toInt)
Run Code Online (Sandbox Code Playgroud)

使用Option代替Some。比用于map将其转换为Int