我正试图实现一种方法,将任何值都转换为特定类型并返回选项,而不是抛出像instanceOf这样的异常。 Scala没有表现得像我期望的那样:编写一个通用的强制转换函数Scala
def cast[A](value: Any): Option[A] =
{
try
{
Some(value.asInstanceOf[A])
} catch
{
case e: Exception => None
}
}
测试:
val stringOption: Option[String] = cast[String](2)
stringOption must beNone
失败,出现错误
java.lang.Exception: 'Some(2)' is not None
有人有一个想法,为什么?
将整型值转换为字符串应该导致异常,并且方法应该返回None,但那不是这种情况。我使用Scala 2.9.0-1 –
是的,它返回一些(2)但是...不是。试图“get”这个值会抛出异常,但getOrElse没问题。 – 2011-08-14 20:30:33
是的,我期望在cast方法中发生异常。 –