Sembra che ci sia una limitazione che non è possibile utilizzare PartialFunction
letterali in costruttori della classe:Non si può mettere in funzione parziale costruttore della classe scala
scala> case class X(a: PartialFunction[Any, Any]) { def this() = this({case x => x}) }
<console>:7: error: Implementation restriction: <$anon: Any => Any> requires premature access to class X.
case class X(a: PartialFunction[Any, Any]) { def this() = this({ case x => x}) }
mia prima domanda è il motivo per cui ha bisogno un letterale funzione parziale accesso a "questo". La mia seconda domanda/osservazione è che nella Scala REPL, in esecuzione di nuovo lo stesso codice si blocca il REPL:
scala> case class X(a: PartialFunction[Any, Any]) { def this() = this({ case x => x}) }
java.lang.NullPointerException
at scala.tools.nsc.Global$Run.compileLate(Global.scala:1595)
at scala.tools.nsc.GlobalSymbolLoaders.compileLate(GlobalSymbolLoaders.scala:29)
at scala.tools.nsc.symtab.SymbolLoaders$SourcefileLoader.doComplete(SymbolLoaders.scala:369)
...
E, infine, c'è una buona soluzione per questo problema?
Vedere [SI-8593] (https://issues.scala-lang.org/browse/SI-8593). Relativo anche: https://groups.google.com/forum/#!topic/scala-user/V085Tg0mKcU –