[英]How does the case by type work in scala?
我知道案例類,模式匹配,未應用和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
的方法MethodSymbol
而且它也性狀不是的情況下的類,所以在女巫代碼編譯變換
{ case m: MethodSymbol => m }
因為MethodSymbol
不是通用類型,所以匹配
case m: MethodSymbol => m
基本上等於
case m if m.isInstanceOf[MethodSymbol] => m
絕對沒有任何魔法在這里,並且unapply
機器是沒有關系的這樣的匹配在所有。 即使在Java中,同樣的事情也可以輕松完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.