我无法访问函数体中的类构造函数参数。在Scala中,构造函数参数成为具有适当的get / set定义的类成员。 但在下面的例子中,我无法引用构造函数参数'p'。有什么我做错了吗?我需要输入前缀吗?
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
}
}
我能够访问显式定义的成员变量,但不能访问构造函数定义的变量。为什么呢?
答案 0 :(得分:5)
默认情况下,构造函数参数是 private :因此它们仅在类本身中可见。但是你改变了这种行为:
abstract class MyFunc(protected val in: Int) extends Function1[Int, Boolean] {
val x : Int = 10
}