Что означает двоеточие, подчеркивание и звезда в Карте сайта lift(записи:*)?
учусь 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:_*))
что именно означает параметр SiteMap? Я вижу, что значение записи список меню. Что такое двоеточие, подчеркивание, звезда? Сначала я думал, что это метод в списке, но я не могу найти такой определение...
1 ответ:
хорошо, после того, как мой коллега упомянул мне, что он столкнулся с этим секретным заклинанием в программирование в Scala книга, я сделал поиск в моей копии и нашел его описанным в раздел 8.8 повторные параметры. (Хотя вам нужно искать с пробелом между двоеточием и подчеркиванием : -/) есть одно предложение, чтобы объяснить это как:
... добавьте аргумент массива с двоеточием и
_*
символ, как этот:scala> echo(arr: _*)
эта нотация говорит компилятору передать каждый элемент
arr
в качестве собственного аргументаecho
, а не все как один аргумент.найти описание предлагаемых здесь более полезным.
так
x: _*
и как объявление типа, которое указывает компилятору обработатьx
как повторное параметр (он же список аргументов переменной длины - С vararg).