Was ist die Bedeutung des Dickdarms ist, unterstreichen und Stern in Lift SiteMap (Einträge: _ *)?
Frage
Ich lerne Scala und Aufzug zur gleichen Zeit, und ich habe auf das Verständnis der Syntax stecken verwendet, um die SiteMap im 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:_*))
Was genau ist die Bedeutung des SiteMap Parameter? Ich sehe, dass der Wert Einträge eine Liste von Menü ist. Was ist das Kolon, unterstreicht, star ? Zuerst dachte ich, es ist ein Verfahren auf der Liste ist, aber ich bin nicht in der Lage eine solche Definition zu finden ...
Lösung
OK, nachdem mein Kollege mir gegenüber erwähnt, dass er dieses Geheimnis Beschwörung in Scala in der Programmierung aufgetreten Buch, habe ich eine Suche in meiner Kopie und fand es beschrieben in Abschnitt 8.8 Wiederholte Parametern . (Obwohl Sie müssen mit Leerzeichen zwischen dem Doppelpunkt und Strich suchen: - /) Es gibt einen einen Satz zu erklären, wie:
... hängen Sie die Array-Argument mit einem Doppelpunkt und eine
_*
Symbol, wie folgt aus:scala> echo(arr: _*)
Diese Schreibweise teilt den Compiler jedes Element
arr
als ihr eigenes Argument zu übergebenecho
, anstatt all das als ein einziges Argument.
Ich finde die Beschreibung hier angebotenen hilfreicher.
So x: _*
ist wie eine Typdeklaration, die die Compiler x
als wiederholten Parameter (auch bekannt als variabler Länge Argumentliste zu behandeln sagt - Vararg ).