web-dev-qa-db-ja.com

リフトのSiteMap(エントリ:_ *)のコロン、アンダースコア、スターの意味は何ですか?

Scalalift を同時に学習していて、Boot.scalaで SiteMap を初期化するために使用される構文を理解するのに行き詰まりました。 :

 val entries = Menu(Loc("Home", "/", "Home")) :: 
       Menu(Loc("Foo", "/badger", "Foo")) ::
       Menu(Loc("Directory Foo", "/something/foo", "Directory Foo")) :: Nil 
 LiftRules.setSiteMap(SiteMap(entries:_*))

SiteMapパラメータの意味は正確には何ですか?値entriesがメニューのリストであることがわかります。 コロン、アンダースコア、スターとは何ですか?最初はリストに載っているメソッドだと思っていたのですが、そのような定義が見つかりません...

59
Palimondo

OK、同僚が私に言った後、彼は Scalaでのプログラミング の本でこの秘密の呪文に遭遇したと言ったので、私は自分のコピーを検索して、セクション8.8で説明されていることを見つけました繰り返されるパラメーター。 (コロンとアンダースコアの間にスペースを入れて検索する必要がありますが:-/)次のように説明する1つの文があります。

...次のように、配列引数にコロンと__*_記号を追加します。scala> echo(arr: _*)

この表記は、コンパイラに、arrの各要素を、すべてを単一の引数としてではなく、独自の引数としてechoに渡すように指示します。

ここで説明 もっと役立つと思います。

したがって、_x: _*_はlike型宣言であり、コンパイラにx繰り返されるパラメータ(別名可変長引数リスト—vararg)。

77
Palimondo