سؤال

أعرف فئات الحالات، ومطابقة الأنماط، وعدم التطبيق، والوظيفة الجزئية، لكنني في حيرة من أمري بشأن مقتطف وحدات الماكرو أدناه.

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

Scaladoc من MemberScopehttp://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 مع الإسناد
لا تنتمي إلى StackOverflow
scroll top