object GoodReturnType extends Dynamic {
def applyDynamic(method: String)(args: Any*) = {
method match {
case "foo" => 25
case "bar" => 14
}
}
}
方法GoodReturnType對象的applyDynamic具有詮釋返回類型。正如預期的那樣,其動態方法的調用也會返回Int。我可以創建一個具有不同返回類型的多個動態方法的類嗎?
scala> GoodReturnType.foo()
res0: Int = 25
如果我們嘗試添加另一個動態方法具有不同的返回類型,返回applyDynamic的類型將是最常見的類型(這是任何)。所有動態方法都如此。
object BadReturnType extends Dynamic {
def applyDynamic(method: String)(args: Any*) = {
method match {
case "foo" => 25
case "bar" => 14
case "baz" => "muahahaha!"
}
}
}
scala> BadReturnType.foo()
res1: Any = 25
是否有可能具有不同返回類型的多個動態方法的類?
>爲什麼不直接使用該方法?只是一個句法示例,儘可能簡單。問這個問題,因爲我很好奇,如果可以創建「動態」orm:user.findById(id:Id):User; user.findAll():List [User],user.whereAgeGt(21):List [User];如你所見,返回類型是不同的。我的猜測是「特徵記錄擴展動態」與解析器內invokeDynamic方法,但這不會工作,因爲我明白 – Jeriho