如果我们将一个列表传递给一个接受可变数量参数的方法,它就可以工作。
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/