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