为什么没有varargs就不能作为另一个传递?varargs:_*
object Main {
def main(s: Array[String]): Unit = {
def someFunction(varars: String*) = {
someOtherFunction(varars) // Compilation ERRRO
someOtherFunction(varars:_*) // Works, but why ?
}
def someOtherFunction(someOtherVarars: String*): Unit = {
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为varars是一个参数 - 一个字符串数组(注意,我不是在写Array[String],因为它不是javaArray,更多细节在这里),而通过查看签名def someOtherFunction(someOtherVarars: String*): Unit,我们可以知道,这someOtherFunction需要每个类型有多个参数String。您不能简单地将数组作为参数传递给someOtherFunction,您需要先“展开”它。
换句话说,可以传递给someOtherFunction它的参数必须被标记为序列参数。能够将varargs和传递varargs(1)给单个函数没有多大意义。它在SLS \xc2\xa74.6.2中进行了描述。