scala – 使用参数化类型重载方法

前端之家收集整理的这篇文章主要介绍了scala – 使用参数化类型重载方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
只是想知道是否有办法使用参数化类型调用重载方法.例如,定义以下对象:

object Wrap {

        def f(x: X) = println("x called")
        def f(y: Y) = println("y called")
        def f(a: Any) = println("Any")

        def fp[T](t: T) = f(t)
}

当我测试这个时,进行以下调用

Wrap.fp(new X())

它转到对Any的调用.有没有办法可以使它从fp()调用适当的f?

解决方法

def process[A](a: A) = a match {
  case c: X => Wrap f c
  case d: Y => Wrap f d
  case _ => Wrap f a 
}

猜你在找的Scala相关文章