2016-08-17 2 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で説明されています。

代替B上の代替のAの相対量は、0〜2の数であり、合計として定義される:またthis answerで述べたように、簡単な方法で、この解像度の一覧を示しblog postあります

  • 1のAが他B、0を定義するクラスまたはオブジェクトから派生したクラスまたはオブジェクトで定義されている場合、Aは、さもなければB、0のように特異的であり、そして
  • 1た場合。

    • CがDのサブクラスである、又は
    • Cがのコンパニオンオブジェクトである次のいずれかが成り立つ場合

    は、クラスまたはオブジェクトCは、クラスまたはオブジェクトDから誘導されますDから派生したクラス、または

  • Dは、Cが由来するクラスのコンパニオンオブジェクトです。

B上Aの相対量がBの相対量よりも大きい場合、Aはとして特定のビューである場合、Aは、A上のビューについて

代替Bよりも特異的である別のBとして、AはBに対して1の相対的な重みを得る。

AがBが定義された派生クラスで定義されている場合、Aは別の相対的な重みを得る。

関連する問題