冒号的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 )。