質問

ケースクラス、パターンマッチング、未申告、そして部分的機能について知っていますが、私はBellow Macros Snippetについて混乱しています。

val declarations = weakTypeOf[T].declarations
val methods = declarations.collect { case m: MethodSymbol => m }
.

会員院のScaladoc. > http://www.scala-lang.org/API / 2.10.4 /#SCALA.REFLECT.API.SCOPES $ MEMBERSCOPE

CollectメソッドはPartialFunction[Universe.Symbol, B]を受け入れます unapplyMethodSymbolメソッドが見つかりません。ケースクラスではなく特性でもありません。そのため、魔女コードコンパイラ変換

{ case m: MethodSymbol => m }
.

役に立ちましたか?

解決

MethodSymbolは一般的なタイプではないため、match

case m: MethodSymbol => m
.

は本質的に

と同等です
case m if m.isInstanceOf[MethodSymbol] => m
.

ここでは絶対に魔法がありません。Javaでも同じものを簡単に行うことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top