Я пытаюсь запустить следующий код в блокноте 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: как определить класс значений
Есть ли решение этой проблемы?
Я использую Apache Toree Scala с ноутбуком Jupyter.
ОС: OS X 10.11.6, Scala 2.11.8, Jupyter 4.3.0, Apache Toree 0.2.0.
Заранее спасибо!