冒号的SiteMap中的冒号,下划线和星号的含义是什么(条目:_ *)?

我正在学习Scala,同时解除了对Boot.scala中初始化SiteMap的语法的理解:

val entries = Menu(Loc("Home", "/", "Home")) :: Menu(Loc("Foo", "/badger", "Foo")) :: Menu(Loc("Directory Foo", "/something/foo", "Directory Foo")) :: Nil LiftRules.setSiteMap(SiteMap(entries:_*)) 

SiteMap参数的意义究竟是什么? 我看到值条目是菜单的列表。 什么是冒号,下划线,星号 ? 起初我以为这是一个名单上的方法,但我无法find这样的定义…

好了,在我的同事向我提到他在Scala编程书中遇到这个秘密咒语的时候,我在我的副本中进行了search,发现它在8.8节重复参数中有描述。 (尽pipe你需要用冒号和下划线之间的空格来search: – /)有一句话可以解释为:

使用冒号和_*符号附加数组参数,如下所示: scala> echo(arr: _*)

这个表示法告诉编译器将每个arr元素作为自己的parameter passing给echo ,而不是把它作为一个单独的参数。

我发现这里提供的描述更有帮助。

所以x: _* 就像是一个types声明,告诉编译器把x当作重复的参数 (又名可变长度参数列表 – vararg )。