2013-03-22 152 views
1

我無法訪問函數體中的類構造函數參數。在Scala中,構造函數參數成爲具有適當get/set定義的類成員。 但在下面的例子中,我無法引用構造函數參數'p'。有什麼我做錯了嗎?我需要放一個前綴嗎?scala抽象類:無法訪問構造函數參數

abstract class MyFunc(in: Int) extends Function1[Int, Boolean] { 
    val x : Int = 10 
} 

val dunc = new MyFunc(10) { 
    def apply(p: Int): Boolean = { 
    p % in == 0 << compilation error. 'in' value not found 
    // p % x == 0 << compiles fine 
    } 
} 

我能夠訪問一個明確定義的成員變量,但不是構造函數定義的變量。爲什麼?

回答

5

默認情況下,構造函數參數是private:所以它們只在類本身中可見。但是你改變了這種行爲:

abstract class MyFunc(protected val in: Int) extends Function1[Int, Boolean] { 
    val x : Int = 10 
}