我们可以在Scala中使用List创建辅助构造函数吗?

时间:2019-02-08 08:55:46

标签: scala

我试图创建一个Request对象,在这里我可以获取一个String作为输入或String列表作为Input。我试图浏览各种答案,但我认为我没有在构造函数中找到List的任何用途。 我正在尝试做这样的事情。

class GetRequest(val url: String) {

def this(val urlList: List[String]){

 }
}

与List的不变性有关吗?

2 个答案:

答案 0 :(得分:3)

Scala强制具有一个主要构造函数,并根据需要提供尽可能多的构造函数 辅助构造函数。有一条规则:每个构造函数都必须调用以前定义的构造函数之一。

这应该对您有用:

class GetRequest(val urlList: List[String]) {
  def this(url: String) {
    this(List(url))
  }
}

答案 1 :(得分:0)

在区分单个传递的参数和相同类型的集合时,实际上并不需要辅助构造函数。这就是varargs语法的目的。

class GetRequest(val urls: String*)

new GetRequest("s")
new GetRequest("a","b","c")
new GetRequest(List("x","y","z"):_*)

在构造函数代码urls中,可以将其视为包含零个或多个元素的Seq[String]