2013-03-23 15 views
10

Basit bir soru eksik derlenmeyecektirScala Gelecek mapTo çizgisinde bir derleyici hatası sonucu sormak, ben sonuca mapTo kullanarak bir sorun var çünkü ClassTag

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

o döküm yapmak için bir ClassTag ihtiyacı neden anlamıyorum? Predef'ten String gibi standart bir sınıf yerine (job ? "Run").mapTo[String]'u tamamlarsa Tamam'ı derler.

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

Hala aynı sorunu alıyorum: Ben olduğu gibi söz konusu çizginin üstünde sınıf hakkını tanımlarken

bu gerçekleşir.

Teşekkür Jason.

Ben de Scala 2.10.0 ve Akka 2.1.0 (bu bir fark yaratır varsa) kullanıyorum belirtmelidir.

+0

Kodunuz şu ana kadar uygun görünüyor - bu nedenle kullandığınız içe aktarmaları kaydeder misiniz? Belki bir ithalat eksik. –

+1

Sadece farklı dönüm noktası uyuşmazlığı (http://grokbase.com/p/gg/scala-language/126k8nt1fx/incompatibility-between-scala-2-10-m3-and-m4) bir [yorumunu] bulundu Scala 2.10.0. Reflect.ClassTag içe aktarmayı önerir. Scala 2.10.1 ve Akka 2.1.1 kullanmayı deneyin, eğer bu sadece son zamanlarda düzeltilmiş bir konu. –

+0

@michael_s, genius, bunun için teşekkürler, 'import reflect.ClassTag' ekleme hile yaptı! Scala sürümlerini henüz güncellemeyi denemedim, geliştirme döngüsündeki bu noktada paket bağımlılıklarını değiştirmek için bit loath. Yorumunuzu bir cevap olarak göndermek isterseniz, doğru bir şekilde işaretleyebilir ve size bir durum verebilirim. – JMac

cevap

15

Bu mapTo yılında örtülü kullanılan ClassTag parametre çalışması gerekir

import reflect.ClassTag 

ekledikten sonra Scala 2.10.0 sürümüyle

ile belirli bir sorun gibi görünüyor.

Ya da (eğer mümkünse tercih edilmelidir) Akka/Scala daha yeni bir sürümü güncelleme.

+0

2.10.1 bir buçuk hafta önce piyasaya sürüldü (2013/3/13). –

+0

Hala Akka 2.1.2 ve Scala 2.10.1, btw. – dOxxx

+0

Jenerik kullanırsanız, örtük bir arg etiketi eklemeliydim: ClassTag [R] 'da. Örnek: 'def reqReply [M, R] (message: M, process: R => Unit) (örtük etiket: ClassTag [R]) = (myAkkaService? Message) .onComplete {case Success (Bazı (r: R)) => işlem (r) ...} // Basitleştirilmiş örnek – Magnus