Scala中构造函数的问题

che*_*bow 0 constructor scala

已经有一段时间了,因为我完全使用了构造函数 - 当我必须在Scala中使用构造函数时,我自然会遇到麻烦.

我想要做以下事情:当我创建一个没有通过任何东西的新类时,它会创建一个空向量.

否则,如果它通过向量 - 我们使用该向量并定义它以与类一起使用.

我该怎么做呢?我以前有过

Class example{ 

val a: Vector[int] = Vector();
Run Code Online (Sandbox Code Playgroud)

然后我迷路了.我在考虑做类似的事情

Class example{ 


val a: Vector[Int] = Vector() 


def this(vector: Vector[Int]){ 
  this{ 
   a = vector
  }
 }
Run Code Online (Sandbox Code Playgroud)

但是我遇到了很多错误.有人可以帮忙吗?我正在尝试找到我的scala书但我找不到它 - 我知道它有一个很好的关于构造函数的部分.

Thi*_*ilo 6

听起来你想要一个带有默认参数的构造函数:

class example(val a : Vector[Int] = Vector())
Run Code Online (Sandbox Code Playgroud)


Chr*_*tin 6

如果你真的想通过构造函数重载来实现这一点,它看起来像这样:

class Example(val a: Vector[Int]) {    
  def this() = this(Vector())
}
Run Code Online (Sandbox Code Playgroud)

个人意见附录:重载和默认参数通常很好避免.我建议只做一个调用构造函数的不同函数:

class Example(val a: Vector[Int])

object Example {
  def empty = new Example(Vector())
}
Run Code Online (Sandbox Code Playgroud)