代码之家  ›  专栏  ›  技术社区  ›  wipman

以任何对象为参数的函数

  •  2
  • wipman  · 技术社区  · 8 年前
    import scala.reflect.runtime.universe._
    import scala.reflect.ClassTag
    
    class A
    class B
    
    def foo[A](x: A) = typeOf[A] match {
        case x:A => println("this an A")
        case _ => println("no match")
      }
    }
    

    但这将证明是无用的,因为不可能匹配,我得到:

    fruitless type test: a value of type runtime.universe.Type cannot also be a A
    

    我想要 foo 随便吃 type 从基本类型到自定义类。我该怎么做?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Nagarjuna Pamu    8 年前

    您可以使用 ClassTag 下面是实现它的方法

    import scala.reflect.ClassTag
    
    def foo[A: ClassTag](x: A) = x match {
      case x: A => println(s"this an ${x.getClass}")
      case _ => println("no match")
    }
    

    A 可以是任何类型。