Qual é o significado de cólon, sublinhado e estrelas em do elevador Sitemap (entradas: _ *)?

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

  •  13-09-2019
  •  | 
  •  

Pergunta

Estou aprendendo Scala e elevador ao mesmo tempo e eu fiquei preso em compreender a sintaxe utilizada para inintialize o SiteMap na 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:_*))

O que exatamente é o significado do parâmetro SiteMap? Vejo que o valor entradas é uma lista de Menu. Qual é o colon, sublinhado, estrela ? No começo eu pensei que é um método na lista, mas eu sou incapaz de encontrar essa definição ...

Foi útil?

Solução

OK, depois de o meu colega mencionou para mim, que ele encontrou esse encantamento secreto na em Scala livro, eu fiz uma pesquisa no meu exemplar e achei descrito no Seção 8.8 parâmetros repetidos . (Embora você precisa procurar com espaço entre o cólon e sublinhado: - /) Há uma frase para explicar como:

... anexar o argumento de matriz com dois pontos e um _* símbolo, como este: scala> echo(arr: _*)

Esta notação diz o compilador para passar cada elemento da arr como seu próprio argumento para echo, em vez de tudo isso como um único argumento.

I encontrar o descrição oferecida aqui mais útil.

Assim x: _* é como uma declaração de tipo que diz ao compilador para x tratar como parâmetro (lista de argumentos repetidos aka de comprimento variável - vararg ).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top