什么是Scala的静态重载规则?

时间:2016-08-17 19:40:27

标签: scala implicit

在关于Scala隐含优先级的许多解释中,它指出如果有多个具有相同优先级的东西,则应用Scala的“静态重载规则”。

但是没有解释这条规则。似乎此表达式仅在此上下文中使用。什么是Scala的静态重载规则?

1 个答案:

答案 0 :(得分:4)

§6.26.3 of the Scala Language Specification中对此进行了解释。正如this answer中所述,有一个blog post以更简单的方式列出了此解决方案:

  
    

备选方案A相对于备选方案B的相对权重是0到2之间的数字,定义为

的总和          
        
  • 1如果A与B一样具体,否则为0,
  •     
  • 1如果在类或对象中定义A,则从定义B的类或对象派生,否则为0。
  •     
         

如果其中一个成立,则类或对象C派生自类或对象D:

         
        
  • C是D的子类,或
  •     
  • C是从D或
  • 派生的类的伴随对象     
  • D是派生C的类的伴随对象。
  •     
         

如果A对B的相对权重大于B对A的相对权重,则备选A比备选B更具特异性。

  
     

对于视图,如果A与B的特定视图相同,则A的相对权重为B。

     

如果A在定义了B的派生类中定义,则A得到另一个相对权重。