Что означает двоеточие, подчеркивание и звезда в Карте сайта лифта (записи: *)?
учусь 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).