我正在学习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:_*))
Run Code Online (Sandbox Code Playgroud)
SiteMap参数的含义究竟是什么?我看到值条目是菜单列表.什么是冒号,下划线,明星?起初我以为它是列表中的一种方法,但我无法找到这样的定义......
Pal*_*ndo 77
好吧,在我的同事向我提起之后,他在Scala编程书中遇到了这个秘密咒语,我在我的副本中进行了搜索,并在第8.8节重复参数中找到了它.(虽然你需要在冒号和下划线之间用空格搜索: - /)有一句话可以解释为:
...用冒号和
_*
符号附加数组参数,如下所示:scala> echo(arr: _*)
这种表示法告诉编译器将每个元素
arr
作为自己的参数传递给它echo
,而不是将它们全部作为单个参数传递.
所以x: _*
是像一个类型声明,告诉编译器把x
作为重复参数(又称可变长度参数列表- 可变参数).