Quel est le sens du côlon, du trait de soulignement et étoiles dans SiteMap ascenseur (entrées: _ *)?

StackOverflow https://stackoverflow.com/questions/1124099

  •  13-09-2019
  •  | 
  •  

Question

J'apprends Scala et ascenseur en même temps et je suis resté bloqué sur la compréhension de la syntaxe utilisée pour inintialize SiteMap dans le 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:_*))

Quelle est exactement la signification du paramètre SiteMap? Je vois que la valeur entrées est une liste de menu. Quel est le colon, souligner, star ? Au début, je pensais que c'est une méthode sur la liste, mais je ne peux pas trouver cette définition ...

Était-ce utile?

La solution

OK, après mon collègue m'a mentionné qu'il a rencontré cette conjuration secrète dans le Programmation en Scala livre, je l'ai fait une recherche dans ma copie et trouvé décrite dans Section 8.8 paramètres répétés . (Même si vous devez rechercher un espace entre les deux points et underscore: - /) Il y a une phrase pour expliquer comme:

  

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

     

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

Je trouve le description donnée ici plus utile.

x: _* est comme une déclaration de type qui indique au compilateur de traiter x comme Paramètre répété (liste alias argument de longueur variable - vararg ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top