1

我无法访问函数主体中的类构造函数参数。在 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
  }
}

我能够访问显式定义的成员变量,但不能访问构造函数定义的变量。为什么?

4

1 回答 1

5

默认情况下,构造函数参数是私有的:因此它们仅在类本身中可见。但是你改变了这种行为:

abstract class MyFunc(protected val in: Int) extends Function1[Int, Boolean] {
    val x : Int = 10
}
于 2013-03-22T12:35:41.970 回答