Pregunta

Sé que sobre las clases de casos, la coincidencia de patrones, la coincidencia de patrones, sin apariencia y la función parcial, pero estoy confundido con el fragmento de macros.

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

ScalAdoc de MemberScope http://www.scala-lang.org/API / 2.10.4 / # Scala.Reflect.api.scopes $ MemberScope

método de recopilación acepta PartialFunction[Universe.Symbol, B] No puedo encontrar el método unapply de MethodSymbol y también es rasgo, no es una clase de casos, por lo que en el compilador de código de brujas transforma

{ case m: MethodSymbol => m }

¿Fue útil?

Solución

Porque GeneracDicetAnDode no es un tipo genérico, la coincidencia

case m: MethodSymbol => m

es esencialmente equivalente a

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

No hay absolutamente ninguna magia aquí, y la maquinaria MethodSymbol no está relacionada con tales coincidencias en absoluto.Lo mismo se puede hacer fácilmente incluso en Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top