Scala中构造函数的问题

时间:2015-10-30 04:43:12

标签: scala constructor

自从我使用构造函数已经有一段时间了 - 当我必须在Scala中使用构造函数时,我很自然地遇到了问题。

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

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

我该怎么做?我以前有过

Class example{ 

val a: Vector[int] = Vector();

然后我迷路了。我在想做像

这样的事情
Class example{ 


val a: Vector[Int] = Vector() 


def this(vector: Vector[Int]){ 
  this{ 
   a = vector
  }
 }

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

3 个答案:

答案 0 :(得分:6)

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

class example(val a : Vector[Int] = Vector())

答案 1 :(得分:6)

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

class Example(val a: Vector[Int]) {    
  def this() = this(Vector())
}

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

class Example(val a: Vector[Int])

object Example {
  def empty = new Example(Vector())
}

答案 2 :(得分:0)

case class Example(a: Vector[Int] = Vector())

无需输入val关键字。

另外,使用case键盘:

  • 紧凑的初始化语法:Example(Vector(1,2)),而不是new Example(Vector(1,2))

  • 您班级的模式匹配

  • 隐式定义的相等比较和漂亮的toString

Reference