스칼라에서 유형별 사례는 어떻게 작동합니까?
-
26-12-2019 - |
문제
케이스 클래스, 패턴 일치, unapply 및 PartialFunction에 대해 알고 있지만 벨로우즈 매크로 조각에 대해서는 혼란스럽습니다.
val declarations = weakTypeOf[T].declarations
val methods = declarations.collect { case m: MethodSymbol => m }
MemberScope의 Scaladochttp://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에서도 동일한 작업을 쉽게 수행할 수 있습니다.
제휴하지 않습니다 StackOverflow