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