scala - telefono - ¿Cuál es el significado de dos puntos, guión bajo y estrella en el Mapa del sitio del ascensor(entradas:_*)?
lift transporte (1)
OK, después de que mi colega me mencionó, que encontró este encantamiento secreto en el libro Programación en Scala , hice una búsqueda en mi copia y encontré que se describe en la Sección 8.8 Parámetros repetidos . (Aunque debe buscar con espacio entre los dos puntos y el guión bajo: - /) Hay una oración para explicarlo como:
... añada el argumento de la matriz con dos puntos y un símbolo
_*
, como este:scala> echo(arr: _*)
Esta notación le dice al compilador que pase cada elemento de
arr
como su propio argumento paraecho
, en lugar de hacerlo todo como un único argumento.
Encuentro la descripción ofrecida aquí más útil.
Entonces x: _*
es como una declaración de tipo que le dice al compilador que trate a x
como un parámetro repetido (aka lista de argumentos de longitud variable - vararg ).
Estoy aprendiendo Scala y lift al mismo tiempo y me quedé atrapado al comprender la sintaxis utilizada para incializar el SiteMap en 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:_*))
¿Cuál es exactamente el significado del parámetro SiteMap? Veo que las entradas de valor es una lista de Menú. ¿Qué es el colon, guión bajo, estrella ? Al principio pensé que era un método en la Lista, pero no puedo encontrar esa definición ...