1
在許多關於Scala隱式優先級的解釋中,它指出如果有多個具有相同優先級的事物,則應用Scala的「靜態重載規則」。什麼是Scala的靜態重載規則?
雖然這個規則沒有解釋。看來這個表達式在這種情況下是專門使用的。什麼是Scala的靜態重載規則?
在許多關於Scala隱式優先級的解釋中,它指出如果有多個具有相同優先級的事物,則應用Scala的「靜態重載規則」。什麼是Scala的靜態重載規則?
雖然這個規則沒有解釋。看來這個表達式在這種情況下是專門使用的。什麼是Scala的靜態重載規則?
這在§6.26.3 of the Scala Language Specification中有解釋。正如this answer還注意到,有一個blog post列出此分辨率以更簡單的方式:
在一個替代乙替代A的相對重量是從0到2的數,其定義爲總和的
- 1,如果A是特異性的,因爲B,否則爲0,和
- 1如果A類或對象是從派生的類或對象定義B,否則爲0被定義。
一個類或對象C從一個類或對象d衍生如果下列之一成立:
- C是d的一個子類,或
- C是一個同伴對象從D派生的類,或
- D是派生C的類的伴隨對象。
一種替代A比替代乙更具體的,如果A對B的相對重量比B的相對重量比越大A.
對於視圖,如果A爲特定視圖作爲B,A相對於B獲得1的相對權重。
如果A在定義了B的派生類中定義,則A獲得另一個相對權重。
http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#overloading-resolution – Alec