bir genel işlevi dikkate derleme zamanında olmayan genel tür uygulamak?nasıl
var actorReceive: Receive = PartialFunction.empty
def addCase[T](handler: T => Boolean): Unit = {
actorReceive = actorReceive orElse ({
case msg: T => // call handle at some point, plus some other logic
handler(msg)
})
}
addCase
fonksiyonu gibi ClassTag
isteyerek çözülebilir tip silme uyarısı, neden olacaktır:
ben çözmek istiyorum ast sorun böyle bir şeydir def addCase[T: ClassTag](...
, ama yine de ClassTag
addCase[List[Int]](_ => {println("Int"); true})
addCase[List[String]](_ => {println("String"); false})
actorReceive(List("str")) // will print "Int"
yukarıdaki kodyazdırır: gibi aramalar karşı korumak olamazherhangi bir uyarı veya hata vermeden, herhangi bir çıkış yolu var mı? aşağıdaki gibi
Burada akka ile uğraştığınız için, 'genel' iletileri yapmaya çalışmanın, özellikle herhangi bir tür bir serileştirme devam ediyor. Daha genel bir düzeyde, Int ve List [Int] türünün her ikisi de *, yani başka hiçbir kısıtlamaya sahip olmayan tek bir tip parametresi bunları ayırt etmeyecektir. Standart bir typeclass çözümü muhtemelen yeterli olacaktır ya da sağlanan link dk14 gibi daha gelişmiş bir şey kullanabilirsiniz. – melps
"List" ten koruma ekleyebilirsiniz: http://stackoverflow.com/questions/15962743/using-context-bounds-negionally-to-ensure-type-class-instance-is-absent-from-s – dk14
Ancak Herhangi bir polimorfik tip – dk14