[英]Can't access generic function type in a inner PartialFunction
我目前正在編寫一個通用函數來執行Dispatch異步請求,但無法在Dispatch處理程序中訪問通用類型:
private def execQuery[MessageType](query : Req, errorMsg : String)
{
Http(query OK as.String).either
.onSuccess
{
case Left(error) => println(errorMsg)
case Right(json) => println( new MessageType(json) ) // error here
}
}
我在新MessageType上出錯:“新MessageType(json)”中的“無法解析符號MessageType”。 你能幫助我嗎 ?
先感謝您
勝利者
編輯:我在這里找到了另一種有趣的方式http://www.brentsowers.com/2011/11/writing-generic-functions-that-take.html 。 您必須使用清單功能:
class DynamicTestClass() {
def output() {
println("Hello from a dynamically sent class")
}
}
def testFunc[T : Manifest]() : T = {
manifest[T].erasure.newInstance().asInstanceOf[T]
}
val dynamicTestClassInstance = testFunc[DynamicTestClass]()
dynamicTestClassInstance.output()
看來可行!
你做不到
def mustMakeA[A](b:String):A = new A(b)
在斯卡拉。
一些實際的原因。 scalac
應該如何知道A
是否具有公共構造函數及其參數?
但是,您可以使用更智能的設計,例如,一個“知道”如何構造參數的類型類:
class Message(val value:String)
trait Constructor[A] {
def cons(b:String)
}
implicit class MessageHasConstructor(m:Message) extends Constructor[Message] {
def cons(b:String) = new Message(b)
}
mustMakeA
,現在我們將mustMakeA
重寫為:
def mustMakeA[A:Constructor](b:String):A = implicitly[Constructor[A]].cons(b)
mustMakeA[Message]("Example") // would give us a `new Message("Example")`
順便說一句,我沒有測試代碼,因此可能需要進行一些調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.