habe ich versucht, den folgenden Code:scala früh initializer mit var Ursache Classcast
class C(val g: Int => Int)
object C {
object A extends {
var f: Int => Int = x => x
} with C(x => f(x) + 1)
def main(args: Array[String]): Unit = {
println(A.g(3))
}
}
It (bei scala Version 2.12.2) zusammenstellen können, aber Exception zur Laufzeit wirft:
Exception in thread "main" java.lang.ExceptionInInitializerError
at pkg1.C$.main(C.scala:14)
at pkg1.C.main(C.scala)
Caused by: java.lang.ClassCastException: scala.runtime.ObjectRef cannot be cast to scala.Function1
at pkg1.C$A$.<init>(C.scala:10)
at pkg1.C$A$.<clinit>(C.scala)
... 2 more
Warum Dies geschieht?
Sind Sie sicher, dass Ihr Code kompiliert? Ich kann es nicht mit scala 2.11.8 kompilieren. Es schlägt mit 'scala.reflect.internal.Types $ TypeError fehl: type mismatch; gefunden: runtime.ObjectRef; erforderlich: Funktion1' –
Ich denke, der Code kompiliert nicht –
Ich benutze Scala Version 2.12 –