Domanda

Conosco le classi del caso, il modello di abbinamento del modello, senzapplemente e la parte parziale, ma sono confuso sullo snippet di Macros.

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

Scaladoc di membri http://www.scala-lang.org/API / 2.10.4 / # scala.reflect.api.Scopes $ memberscope

Raccogli il metodo accetta PartialFunction[Universe.Symbol, B] Non riesco a trovare il metodo unapply di MethodSymbol ed è anche il tratto non è una cassa del caso, quindi in Witch Code Compiler trasforma

{ case m: MethodSymbol => m }
.

È stato utile?

Soluzione

Poiché MethodSymbol non è un tipo generico, la partita

case m: MethodSymbol => m
.

è essenzialmente equivalente a

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

Non c'è assolutamente nessuna magia qui, e i macchinari unapply non sono correlati a tali partite.La stessa cosa può essere facilmente eseguita anche in Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top