2016-08-17 6 views
1

Во многих объяснениях о неявном приоритете Scala в нем говорится, что если существует более одного предмета с одинаковым приоритетом, применяется «статическое правило перегрузки» Scala.Что такое статическое правило перегрузки Scala?

Это правило не объяснено. Кажется, что это выражение используется исключительно в этом контексте. Что такое статическое правило перегрузки Scala?

+0

http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#overloading-resolution – Alec

ответ

4

Это объясняется в §6.26.3 of the Scala Language Specification. Кроме того, как отмечено в this answer, есть blog post, который перечисляет это разрешение более простым способом:

Удельный вес альтернативной А над альтернативной B представляет собой число от 0 до 2, определяемая как сумма из

  • 1, если а конкретно в, 0 в противном случае, и
  • 1, если а определен в классе или объекте, который является производным от класса или объекта определении B, 0 в противном случае.

Класс или объект С является производным от класса или объекта D, если одно из следующих условий:

  • С представляет собой подкласс D, или
  • С является спутником объектом класс, полученный из D, или
  • D является сопутствующим объектом класса, из которого получен C.

Альтернативные А более конкретно, чем альтернативные В случае, если удельный вес A над B больше, чем относительный вес B над А.

Для представлений, если А как конкретный вид как B, A получает относительный вес 1 над B.

Если A определено в производном классе, в котором B определен, A получает другой относительный вес.