我看到一个名字绑定的测试用例让我走吧?所以这里是简单规则的概述。我确信已在许多博客文章和SO问题中对此进行了审核。
测试用例Top
确保PrimaryKey
不明确。
“啊?”我认为进口是“低优先级”。为什么不编译?
为什么它只是花括号内的问题(见X2
)?
package imps
object X {
object Y {
val Z = 7
}
object A {
val Z = 9
import Y.Z
println(Z)
}
}
object X2 {
object Y {
val Z = 7
}
object A {
val Z = 9
locally {
import Y.Z
println(Z)
}
}
}
object Top {
object ColumnOption {
object PrimaryKey
}
class A {
def PrimaryKey: Any = ???
{
import ColumnOption._
(null: Any) match { case PrimaryKey => }
PrimaryKey // was already ambigious in 2.10.3
}
}
}
答案 0 :(得分:1)
这是规范第2章开头的简单说明。出于某种原因,我没有内化它,所以在这里,外化。
测试用例Top
确保PrimaryKey
不明确。
我认为导入是“次要优先级”,所以我尝试编译X
。
但是在嵌套范围内,请参阅X2
,导入变得模棱两可。
原因是在范围内,请参阅X
,本地Z
的优先级高于导入的Z
。
但是在嵌套作用域中,val Z
不再是作用域的本地,因此它在“范围内”而不是“本地”。此外,导入的Z
不会影响它,正如规范所说,因为它具有较低的优先级。因此关于模糊Z
的错误。