相关疑难解决方法(0)

在Scala中,如何在类的主构造函数中定义局部参数?

在Scala中,如何在不是数据成员的类的主构造函数中定义局部参数,例如,仅用于初始化基类中的数据成员?

例如,在下面的代码中,如何b在类的主构造函数中正确定义参数,B以便它只生成临时本地参数而不是数据成员?

class A(var a: Int)
class B(?b?) extends A(b)
Run Code Online (Sandbox Code Playgroud)

Randall,你的答案解释了当我引入一个inc增加属性的方法时Scala编译器抱怨的原因a,但是也改变了类B构造函数中参数的名称以匹配类构造函数中参数的名称A:

class A(var a: Int)
class B(a: Int) extends A(a) {
  def inc(value: Int) { this.a += value }
}
Run Code Online (Sandbox Code Playgroud)

Scala编译器输出:

$ scala construct.scala
construct.scala:3: error: reassignment to val
  def inc(value: Int) { this.a += value }
                               ^
one error found
Run Code Online (Sandbox Code Playgroud)

Scala抱怨因为引用in 而类B必须现在具有私有的只读属性.更改以生成不同的编译器错误:aaincB(a: Int)B(var a: Int)

construct.scala:2: error: error overriding variable …
Run Code Online (Sandbox Code Playgroud)

constructor scala

8
推荐指数
1
解决办法
2075
查看次数

标签 统计

constructor ×1

scala ×1