我想了解的優先級上綁定93頁的約書亞Suareth的書斯卡拉深入第四屆規則。試圖瞭解Scala的優先權第4詳解書
,根據這一規則:由包條款沒有在定義時有優先級最低的源文件可用
定義。
正是這個規則,我打算測試。
所以關我去,並試圖遵循第94頁。思想的Josh的火車,他創建了一個名爲externalbindings.scala源文件,我也一樣,用了一些更改,如下
package com.att.scala
class extbindings {
def showX(x: Int): Int = {
x
}
object x1 {
override def toString = "Externally bound obj object in com.att.scala"
}
}
下一頁他要求我們創建另一個文件,以便我們測試上述規則。我創建了一個名爲precedence.scala:
package com.att.scala
class PrecedenceTest { //Josh has an object here instead of a class
def testPrecedence(): Unit = { //Josh has main method instead of this
testSamePackage()
//testWildCardImport()
//testExplicitImport()
//testInlineDefinition()
}
println("First statement of Constructor")
testPrecedence
println("Last statement of Constructor")
def testSamePackage() {
val ext1 = new extbindings()
val x = ext1.showX(100)
println("x is "+x)
println(obj1) // Eclipse complains here
}
}
現在,約什是能夠通過簡單地做在REPL的<package-name>.<object-name>.testSamePackage
方法來打印出他的榜樣對象的值。 他的輸出是:
外部約束在封裝測試
在我的版本x對象,該文件是在Eclipse中,我有我的嵌入式斯卡拉解釋。
Eclipse的抱怨就在這裏:println(obj)
,它說:not found value obj1
我做得顯然是錯誤的設置測試文件? 我想能夠測試我上面提到的規則和得到的輸出:
外部約束的obj對象中封裝com.att.scala
我很高興你指出了這一點。我犯的錯誤是讓對象obj1成爲類的extbindings成員。你所有的解釋都很清楚,內容豐富。 – ilango 2012-07-25 16:03:14
我將實施您所建議的改進。 – ilango 2012-07-25 16:12:17