如何将其转换为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,你将获得运行时异常.
归档时间: |
|
查看次数: |
32746 次 |
最近记录: |