lift的站点地图(条目:_*)中冒号、下划线和星号的含义是什么?

发布于 2024-07-28 07:20:10 字数 618 浏览 6 评论 0 原文

我正在学习 Scalalift 同时,我一直在理解用于初始化 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参数的具体含义是什么? 我看到值 entries 是菜单列表。 什么是冒号、下划线、星号? 起初我以为这是列表上的方法,但我找不到这样的定义......

I'm learning Scala and lift at the same time and I got stuck on understanding the syntax used to inintialize the SiteMap in the Boot.scala:

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

What exactly is the meaning of the SiteMap parameter?
I see that the value entries is a list of Menu. What is the colon, underscore, star?
At first I thought it is a method on the List, but I am unable to find such definition...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请止步禁区 2024-08-04 07:22:32

好吧,在我的同事向我提到之后,他在 Programming in Scala 书中遇到了这个秘密咒语,我在我的副本中进行了搜索,发现它在第 8.8 节重复参数中进行了描述。 (虽然搜索时需要在冒号和下划线之间加空格 :-/ )有一句话可以解释为:

...在数组参数后附加冒号和 _* 符号,如下所示:
scala> 回声(arr:_*)

此表示法告诉编译器将 arr 的每个元素作为其自己的参数传递给 echo,而不是将其全部作为单个参数传递。

我找到 此处提供的说明更有帮助。

因此,x: _*就像一个类型声明,告诉编译器将x视为重复参数(又名可变长度参数列表 - vararg)。

OK, after my colleague mentioned to me, that he encountered this secret incantation in the Programming in Scala book, I did a search in my copy and found it described in Section 8.8 Repeated parameters. (Though you need to search with space between the colon and underscore :-/ ) There is a one sentence to explain it as:

... append the array argument with a colon and an _* symbol, like this:
scala> echo(arr: _*)

This notation tells the compiler to pass each element of arr as its own argument to echo, rather than all of it as a single argument.

I find the description offered here more helpful.

So x: _* is like a type declaration that tells the compiler to treat x as repeated parameter (aka variable-length argument list — vararg).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文