我知道案例类,模式匹配,unapply和PartialFunction,但我对下面的宏报告片段感到困惑。
val declarations = weakTypeOf[T].declarations
val methods = declarations.collect { case m: MethodSymbol => m }
MemberScope的Scaladoc http://www.scala-lang.org/api/2.10.4/#scala.reflect.api.Scopes $ MemberScope
收集方法接受PartialFunction[Universe.Symbol, B]
我无法找到unapply
的{{1}}方法,而且它也不是一个案例类,所以在女巫代码编译器转换中
MethodSymbol
答案 0 :(得分:3)
由于MethodSymbol
不是通用类型,因此匹配
case m: MethodSymbol => m
基本上等同于
case m if m.isInstanceOf[MethodSymbol] => m
这里绝对没有魔力,unapply
机器与这些比赛根本没有关系。即使在Java中也可以轻松完成同样的事情。