Scala中BoxedUnit和Unit之间有什么区别?它们什么时候用作函数的返回类型?他们与REF的关系是什么?这是我在处理Unit时遇到的类型不匹配错误。
错误:java.lang.AssertionError:断言失败:无法在源代码单元hello.scala中将UNIT转换为REF(类BoxedUnit) - / Users / shiyu / Scala / FinalDataFlow / src / print / hello.scala ,线路347,偏移量= 13999
答案 0 :(得分:12)
Unit
是唯一值()
的类型,发音为" unit"。
BoxedUnit
是JVM上Scala的实现详细信息,用于在()
进入通用上下文时进行编码,或以其他方式分配给Any
}。通常情况下,您不应该首先听到BoxedUnit
,尽管它确实泄漏到某些用户级功能。例如((): Any).getClass().getName() == "scala.runtime.BoxedUnit"
。
也就是说,你得到的错误显然是编译器崩溃,AssertionError
证明了这一点。它在您的代码中不是问题。如果它不在bug数据库中,你应该report this as a bug。