如何通过类型在scala中工作?

时间:2014-06-05 09:28:58

标签: scala reflection scala-macros partialfunction scala-compiler

我知道案例类,模式匹配,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

1 个答案:

答案 0 :(得分:3)

由于MethodSymbol不是通用类型,因此匹配

case m: MethodSymbol => m

基本上等同于

case m if m.isInstanceOf[MethodSymbol] => m

这里绝对没有魔力,unapply机器与这些比赛根本没有关系。即使在Java中也可以轻松完成同样的事情。