Ich versuche, ein einfaches Uplink-Beispiel zu bekommen, und es scheint, dass ich hier etwas verpasse. Ich möchte das Beispiel ausprobieren, das auf der Readme-Seite für den Uplink
bereitgestellt wird %Vor%Dann ist mein Code:
%Vor%Ich bekomme nur den Fehler:
Das referenzierte Merkmal [[A]] hat keine Unterklassen. Das vielleicht passieren aufgrund einer Beschränkung von scalac (SI-7046) angesichts der Eigenschaft ist nicht im selben Paket. Wenn dies der Fall ist, kann die Hierarchie sein definiert mit ganzzahligen Konstanten.
Ich habe zwei Fragen:
Hatten Sie jemals das Syndrom, dass Sie mehrere Stunden mit einem solchen Problem verbringen können, und Sie lösen es Minuten nachdem Sie die StackOverflow-Frage gestellt haben?
Es stellt sich heraus, dass aufgrund von Compiler-spezifische Details , ein solches versiegeltes Merkmal kennt seine direkten Unterklassen erst nach dem Punkt in der Datei, in dem es definiert ist. Also, in diesem Fall hatte ich das Merkmal und seine Fälle definiert nach die Hauptmethode, wo Upickle seine Makroexpansion und Magie tun würde. An diesem Punkt wird es nicht über die Fälle der Eigenschaft wissen. Wenn die Hauptmethode nach der Definition des Merkmals und seiner Fälle in derselben Datei verschoben wird, funktioniert es.
Ich habe diesen Fehler in einem Scala.js-Projekt festgestellt, wo ich eine versiegelte abstrakte Klasse zwischen Server und Client freigegeben habe.
Die Lösung bestand darin, den Typelevel-Compiler anstelle des standardmäßigen Lightbend-Compilers zu verwenden.
Das ist leicht gemacht:
build.properties
: sbt.version=0.13.13-M1
ein
build.sbt
: scalaOrganization in ThisBuild:= "org.typelevel"
Der Vollständigkeit halber kann ich diese Klasse jetzt zwischen Client und Server freigeben:
%Vor%Tags und Links scala serialization scala.js upickle