自从我使用构造函数已经有一段时间了 - 当我必须在Scala中使用构造函数时,我很自然地遇到了问题。
我想要做以下事情:当我创建一个没有通过任何东西的新类时,它会创建一个空向量。
否则,如果它通过向量 - 我们使用该向量并定义它以与类一起使用。
我该怎么做?我以前有过
Class example{
val a: Vector[int] = Vector();
然后我迷路了。我在想做像
这样的事情Class example{
val a: Vector[Int] = Vector()
def this(vector: Vector[Int]){
this{
a = vector
}
}
但是我遇到了很多错误。有人可以帮忙吗?我正在尝试找到我的scala书但我找不到它 - 我知道它有一个很好的关于构造函数的部分。
答案 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