Qual è il significato di colon, sottolineano e stelle di SiteMap di ascensore (voci: _ *)?

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

  •  13-09-2019
  •  | 
  •  

Domanda

Scala e ascensore allo stesso tempo e sono rimasto bloccato sulla comprensione della sintassi utilizzata per inintialize Mappa del sito nel 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:_*))

Che cosa è esattamente il significato del parametro Sitemap? Vedo che il valore di voci è una lista di Menu. Qual è il del colon, sottolineare, stella ? In un primo momento ho pensato che è un metodo sulla lista, ma sono in grado di trovare tale definizione ...

È stato utile?

Soluzione

OK, dopo il mio collega accennato a me, che ha incontrato questo incantesimo segreto nel Programmazione a Scala libro, ho fatto una ricerca nella mia copia e l'ho trovato descritta in Sezione 8.8 parametri ripetuti . (Anche se c'è bisogno di cercare con spazio tra i due punti e sottolineatura: - /) V'è un'una frase per spiegare come:

  

... aggiungere l'argomento array con due punti e un _* il simbolo, in questo modo:   scala> echo(arr: _*)

     

Questa notazione dice al compilatore di passare ogni elemento del arr come proprio argomento echo, piuttosto che tutto questo come un singolo argomento.

Trovo il descrizione offerto qui più utile.

Quindi x: _* è come una dichiarazione di tipo che dice al compilatore di trattare x come parametro ripetuto (alias di lunghezza variabile lista di argomenti - vararg ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top