- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我写我的 recent answer我还尝试以更“实用”的方式解决问题,但遇到了以下问题:
scala> "1".asInstanceOf[Int]
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at scala.runtime.BoxesRunTime.unboxToInt(Unknown Source)
...
但
scala> Some("1".asInstanceOf[Int])
res29: Some[Int] = Some(1)
并且只有
scala> res29.get
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at scala.runtime.BoxesRunTime.unboxToInt(Unknown Source)
...
最佳答案
构造函数参数不是惰性求值的。出现错误的那一刻就是 REPL 尝试将结果显示为 Int ( unboxToInt
) 的那一刻。如果您在堆栈中进一步查看,您会发现 scala_repl_result
.
我相信问题在于asInstanceOf[Int]
在运行时根本不检查。我不知道这是根据规范(对于值类型)还是错误。编译器被欺骗接受 "1"
是 Int
(或盒装 Int),等待 asInstanceOf 隐含的运行时检查,但不会发生。
如 Option
/Some
不是专门的,在运行时只有 Some[Object]
.所以对于 JVM,有一个对构造函数 new Some(Object o) 的调用,它在代码验证和运行时被接受。 toString
(由 REPL 在新构建的 Some 上调用)位于通用代码中,其中 T 被视为 Object
也是(或 AnyRef
),所以它可以工作,并且 Some(1)
被陈列。另一方面,每次在编译器知道泛型参数类型的上下文中访问该值时,都会在代码中插入一个强制转换(如果是值类型,则取消装箱)。这是它实际失败的时候(这里 REPL 在显示之前进行拆箱)。
编辑 这是在 Scala 2.8.1 中。根据上面@incrop 的评论,现在已修复。
关于scala - 一些带有 asInstanceOf 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6924665/
我正在试用 scalajs,但对如何使用 org.scalajs.dom.html 包访问 DOM 元素感到很困惑。通过反复试验,我发现有些元素需要使用 asInstanceOf 转换为特定类型,但有
在下面的代码中,是否可以在不使用 asInstanceOf 的情况下重新表述?我发现了一些应该避免使用 asInstanceOf/isInstanceOf 的样式指南建议,并且我设法清理了我的代码,除
我想编写一个转换为类型 A 的函数,其中 A 可以是例如List[Int],或更复杂的参数化类型,如 Map[Int, List[Int]]。 def castToType[A](x: Any): A
关于如何在不作弊和不使用 asInstanceOf 的情况下完成以下操作,我画了一个空白. 假设我有一些任意密封类型的对象,每个对象都有自己的类型成员。 sealed trait Part { t
我收到 not found: value Duck class Type class Value(val t: Type) class Duck extends Type {
考虑这个(有点做作的)例子: abstract class Obj[A, B] { def id: Long def parent: B } abstract class TopLev
如果您用这段非常糟糕的代码打扰 Scala 编译器(2.9.1 或 2.10.0-M7)... null.$asInstanceOf[Int] ...它抛出断言失败。问题:什么是 $asInstanc
在我的团队中,我经常看到队友在写作 list.filter(_.isInstanceOf[T]).map(_.asInstanceOf[T]) 但这对我来说似乎有点多余。 如果我们知道过滤列表中的所有
当我写我的 recent answer我还尝试以更“实用”的方式解决问题,但遇到了以下问题: scala> "1".asInstanceOf[Int] java.lang.ClassCastExcep
目前我的代码需要类转换 val dataWriter: BytesDataWriter = createDataWriter def createDataWriter(p: SomeClass) =
我试图回答 this问题,因为我以为我知道答案。 事实证明,我还不够了解:/ 这是我做过的一个测试: class Inst[T] { def is(x: Any) = scala.util.Try
这个问题在这里已经有了答案: What is happening with 0.asInstanceOf[B] in Scala reduceLeft implementation (2 个答案)
根据设计,我们确信我们有一个 HourlyDateFormat 的实例。 在这种情况下如何避免调用 asInstanceOf(即如何帮助编译器推断类型)? sealed trait Storage
我正在阅读 Akka Futures Guide我看到这句话: Also note that the Future returned by an Actor is a Future[Any] sinc
在 PlayFramework 2.4 中,我尝试将所有 Controller 方法转换为 JavaScript 路由。 val jsRoutesClass = classOf[routes.java
为什么 asInstanceOf 不抛出 ClassCastException ? scala> List("a").asInstanceOf[List[Int]] res34: List[Int]
这是我的代码的简化版本。 如何避免调用asInstanceOf (因为这是一个糟糕的设计解决方案的气味)? sealed trait Location final case class Single(
尝试将 String 转换为 Double 显然会失败: scala> Try("abc".asInstanceOf[Double]) res11: scala.util.Try[Double] =
尝试将 String 转换为 Double 显然会失败: scala> Try("abc".asInstanceOf[Double]) res11: scala.util.Try[Double] =
我有一个 Scala 类,它从 JOSN 模板文件中读取格式化信息,并从另一个文件中读取数据。目标是格式化为模板文件指定的 JSON 对象。我正在使用布局,但现在我想将输出类型设置为模板中的类型(即,
我是一名优秀的程序员,十分优秀!