具有可变数量参数的 Scala 类构造函数

标签 scala class constructor variadic-functions

如果我们将一个列表传递给一个接受可变数量参数的方法,它就可以工作。

val testList = List("a", "b", "c")

def testMethod(str: String*): Seq[String] = str

testMethod(testList) // outputs WrappedArray(List("a", "b", "c"))

但是如果我们将一个列表传递给一个带有可变数量参数的类构造函数,我们会得到一个类型错误。

val testList = List("a", "b", "c")

class TestClass(str: String*)

val t = new TestClass(testList)

// error: type mismatch

// found: List[String]

// required: [String]

知道我们该如何解决这个问题吗?

最佳答案

这两种情况都不起作用(请注意第一种情况下不需要的 WrappedArray)。为了将序列作为可变参数列表传递,您需要这样对待它。它的语法是相同的。在第一种情况下:

testMethod(testList: _*)

在第二种情况下:

val t = new testClass(testList: _*)

您可以用类似可变参数语法的方式来解释这种表示法,唯一的区别是这里没有明确说明类型(而是使用下划线)。

关于具有可变数量参数的 Scala 类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38399526/

相关文章:

scala - Akka 流 : validation of elements being streamed

scala - Apache Spark 2.1 : java. lang.UnsupportedOperationException : No Encoder found for scala. collection.immutable.Set [字符串]

javascript - 访问任意父类(super class)中声明的属性

javascript - Mootools 添加一个类到 'a' href ="something"

具有变量初始化的 C++ 构造函数

java - 尝试在构造函数中传递数组

scala - 模拟 Scala 对象和函数

scala - Spray-json 和列表编码

css - 用 watir 检查标签类?

c++ - Const 对 Copy Constructor 重要吗?