كيف تعمل الحالة حسب النوع في سكالا؟
-
26-12-2019 - |
سؤال
أعرف فئات الحالات، ومطابقة الأنماط، وعدم التطبيق، والوظيفة الجزئية، لكنني في حيرة من أمري بشأن مقتطف وحدات الماكرو أدناه.
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.
لا تنتمي إلى StackOverflow