Что означает двоеточие, подчеркивание и звезда в Карте сайта лифта (записи: *)?

учусь Scala и лифт в то же время, и я застрял на понимании синтаксиса, используемого для inintialize Карта сайта в багажнике.скала:

 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? Я вижу, что значение записи список меню. Что такое двоеточие, подчеркивание, звезда? Сначала я думал, что это метод в списке, но я не могу найти такой определение...

1 ответов


хорошо, после того, как мой коллега упомянул мне, что он столкнулся с этим секретным заклинанием в программирование в Scala книга, я сделал поиск в моей копии и нашел ее описанной в раздел 8.8 повторные параметры. (Хотя вам нужно искать с пробелом между двоеточием и подчеркиванием : -/) есть одно предложение, чтобы объяснить это как:

... добавьте аргумент массива с двоеточием и _* символ, как этот: scala> echo(arr: _*)

эта нотация сообщает компилятору передать каждый элемент arr в качестве собственного аргумента echo, а не все как один аргумент.

найти описание предлагаемых здесь более полезным.

так x: _* is как объявление типа, которое говорит компилятору обработать x as повторное параметр (он же список аргументов переменной длины - С vararg).