0
我试图运行在一个Jupyter笔记本下面的代码:当电池执行一条错误消息如何在jupyter笔记本运行阶值类
trait Printable extends Any {
def print(): Unit = println(this)
}
class Wrapper(val underlying: Int) extends AnyVal with Printable
object Demo {
def main(args: Array[String]) {
val w = new Wrapper(3)
w.print() // actually requires instantiating a Wrapper instance
}
}
Demo.main(Array())
出现:
Name: Compile Error
Message: <console>:15: error: value class may not be a member of another class
class Wrapper(val underlying: Int) extends AnyVal with Printable
^
StackTrace:
我认为这是因为Jupyter可能正在运行scala
命令而不是scalac
命令,并且显然scala
将所有内容都封装到顶级类中以启用脚本。值类不能是内部类,因此也是错误的原因。有关于这个主题相关的问题:
scala: how to define a value class
是否有可能解决这个问题?
我使用Jupyter笔记本运行Apache Toree Scala。
OS:OS X 10.11.6,Scala 2.11.8,Jupyter 4.3.0,Apache Toree 0.2.0。
在此先感谢!
谢谢!这解决了我的问题。 scala语法是否需要一个人使用“extends Printable”而不是“使用Printable扩展AnyVal”?或者这只是在这种情况下才需要,因为Scala正在Jupyter笔记本电脑环境中使用? – ecampana
很高兴听到这一点。 :-)我编辑了我的答案,试图使其更清楚,为什么这能解决问题。如果您对“扩展”和“与”感到困惑,请查看此处:https://stackoverflow.com/questions/41031166/scala-extends-vs-with – Paul