BoxedUnit与Scala中的单位

时间:2015-08-29 18:38:31

标签: scala

Scala中BoxedUnit和Unit之间有什么区别?它们什么时候用作函数的返回类型?他们与REF的关系是什么?这是我在处理Unit时遇到的类型不匹配错误。

  

错误:java.lang.AssertionError:断言失败:无法在源代码单元hello.scala中将UNIT转换为REF(类BoxedUnit) - / Users / shiyu / Scala / FinalDataFlow / src / print / hello.scala ,线路347,偏移量= 13999

1 个答案:

答案 0 :(得分:12)

Unit是唯一值()的类型,发音为" unit"。

BoxedUnit是JVM上Scala的实现详细信息,用于在()进入通用上下文时进行编码,或以其他方式分配给Any }。通常情况下,您不应该首先听到BoxedUnit,尽管它确实泄漏到某些用户级功能。例如((): Any).getClass().getName() == "scala.runtime.BoxedUnit"

也就是说,你得到的错误显然是编译器崩溃,AssertionError证明了这一点。它在您的代码中不是问题。如果它不在bug数据库中,你应该report this as a bug