2013-03-23 11 views
10

Einfache Frage wegen fehlender zu kompilieren, ich habe ein Problem, wo mapTo auf das Ergebnis unter Verwendung der Ergebnisse stellen in einem Compiler-Fehler entlang der Linien von:Scala Zukunft mapTo nicht ClassTag

not found: value ClassTag 

Zum Beispiel:

(job ? "Run").mapTo[Result] 
       ^

Ich verstehe nicht, warum es einen ClassTag braucht, um die Besetzung zu tun? Wenn ich eine Standardklasse von Predef wie String wie in (job ? "Run").mapTo[String] ersetze, kompiliert OK. Diese

passiert, wenn ich die Klasse direkt über der Linie in Frage definieren, wie in:

class Result {} 
(job ? "Run").mapTo[Result] 

ich immer noch das gleiche Problem.

Danke, Jason.

Ich sollte auch sagen, dass ich Scala 2.10.0 und Akka 2.1.0 verwende (wenn das einen Unterschied macht).

+0

Ihr Code sieht soweit OK aus - also könnten Sie die importierten Importe posten? Vielleicht fehlt ein Import. –

+1

Ich habe gerade einen [Kommentar] (http://grokbase.com/p/gg/scala-language/126k8nt1fx/incompatibility-between-scala-2-10-m3-and-m4) über Inkompatibilitäten in den verschiedenen Meilensteinen von gefunden Scala 2.10.0. Es schlägt vor, "reflect.ClassTag" zu importieren. Versuchen Sie es mit Scala 2.10.1 und Akka 2.1.1, wenn das Problem erst kürzlich behoben wurde. –

+0

@michael_s, genius, danke dafür, das Hinzufügen von 'import reflect.ClassTag' hat es geschafft! Ich habe noch nicht versucht, Scala-Versionen zu aktualisieren, aber ich scheue es, Paketabhängigkeiten zu diesem Zeitpunkt im Entwicklungszyklus zu ändern. Wenn du deinen Kommentar als Antwort posten willst, kann ich ihn korrekt markieren und dir einen Status geben. – JMac

Antwort

15

Dies scheint mit der Scala 2.10.0 Version

Nach der Zugabe von

import reflect.ClassTag 

die implizit verwendet ClassTag Parameter in mapTo arbeiten sollte ein besonderes Problem zu sein.

Entweder das oder die Aktualisierung auf eine neuere Version von Akka/Scala (was wenn möglich vorzuziehen ist).

+0

2.10.1 wurde vor etwa anderthalb Wochen veröffentlicht (2013/3/13). –

+0

Immer noch gebrochen mit Akka 2.1.2 und Scala 2.10.1, btw. – dOxxx

+0

Wenn Sie Generics verwenden, muss ich auch das implizite Arg-Tag: ClassTag [R] 'hinzufügen. Beispiel: 'def reqReply [M, R] (Nachricht: M, Prozess: R => Einheit) (implizites Tag: ClassTag [R]) = (Nachricht myAkkaService?) .onComplete {Fall Erfolg (Einige (r: R)) => process (r) ...} // vereinfachtes Beispiel' – Magnus

Verwandte Themen