Scala toSeq:_ *语法如何工作?

时间:2014-05-27 11:09:08

标签: scala variadic-functions

在Scala代码中

val s = Set(List(1,2,3).toSeq:_*)

toSeq:_*语法如何工作?我知道代码的作用,我知道toSeq做了什么,我理解List(1,2,3).toSeq:Seq[Int]toSeq:_*是一个特例吗?

1 个答案:

答案 0 :(得分:2)

toSeq在这里没有完成任何事情,应该省略。以下是等效的:

Set(List(1, 2, 3): _*)

(或者甚至更好,只需写List(1, 2, 3).toSet。)

由于您说您知道代码的作用,我假设您理解_*类型注释将列表标记为序列参数(如果没有,请参阅the language specification)的4.6.2。这适用于任何Seq,包括List,因此使用toSeq显式转换列表只会更加混乱。