object GoodReturnType extends Dynamic {
def applyDynamic(method: String)(args: Any*) = {
method match {
case "foo" => 25
case "bar" => 14
}
}
}
GoodReturnTypeオブジェクトのメソッドapplyDynamicには、 Intリターン型があります。予想どおり、動的メソッドを呼び出すとIntも返されます。
scala> GoodReturnType.foo()
res0: Int = 25
戻り値のタイプが異なる別の動的メソッドを追加しようとすると、 applyDynamicの戻り値タイプが最も一般的なタイプ(Any)になります。したがって、すべての動的メソッドと同様です。
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
異なる戻り型を持つ複数の動的メソッドを持つクラスを持つことは可能ですか?