将选项[Any]转换为int

Bob*_*Bob 26 scala

如何将其转换为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,你将获得运行时异常.