60 votes

Quelle est la signification de deux points, de soulignement et d'étoile dans le plan de site de lift (entrées: _ *)?

Je suis en apprentissage de la Scala et de l'ascenseur en même temps et je me suis coincé sur la compréhension de la syntaxe utilisée pour inintialize le SiteMap dans le coffre.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:_*))

Quel est exactement le sens de la SiteMap paramètre? Je vois que la valeur des entrées d' une liste de Menu. Qu'est-ce que le côlon, le soulignement, l'étoile? Au début, je pensais que c'est une méthode sur la Liste, mais je suis incapable de trouver une telle définition...

78voto

Palimondo Points 2337

OK, après mon collègue a mentionné à moi, qu'il a rencontré ce secret incantation dans la Programmation Scala livre, j'ai fait une recherche dans ma copie et a trouvé qu'il est décrit dans la Section 8.8 Répété paramètres. (Si vous avez besoin de rechercher avec un espace entre le côlon et le trait de soulignement :-/ ) Il y a une phrase pour expliquer que:

... ajouter l'argument de tableau avec deux points et un _* symbole, comme ceci: scala> echo(arr: _*)

Cette notation indique au compilateur pour passer chaque élément de l' arr comme son propre argument echo, plutôt que de tous comme un seul argument.

Je trouve la description offerte ici pour être plus utile.

Donc, x: _* est comme un type de déclaration qui indique au compilateur de traiter x comme répété paramètre (aka longueur variable de la liste d'arguments - vararg).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X