如何将其转换为Int而不是 Some(Int)
val a: Option[Any] = Some(1)
Run Code Online (Sandbox Code Playgroud)
我试过toInt,它给了一个错误value toInt is not a member of Option[Any]
Emi*_*l H 40
你可以做a.get.asInstanceOf[Int]但不安全.更好的方法是保留类型信息,即使用Option[Int]而不是使用Option[Any].然后你不需要使用asInstanceOf.
val a:Option[Int] = Some(1)
val i = a.get
Run Code Online (Sandbox Code Playgroud)
get直接使用是不安全的,因为如果Option是一个None异常被抛出.所以使用getOrElse更安全.或者您可以使用模式匹配a来获取值.
val a:Option[Any] = Some(1) // Note using Any here
val i = (a match {
case Some(x:Int) => x // this extracts the value in a as an Int
case _ => Int.MinValue
})
Run Code Online (Sandbox Code Playgroud)
om-*_*nom 14
使用.asInstanceOf方法
a.getOrElse(0).asInstanceOf[Int]
Run Code Online (Sandbox Code Playgroud)
我必须注意,这是不安全的强制转换:如果你的选项不包含Int,你将获得运行时异常.