Что означают двоеточие, подчеркивание и звездочка в карте сайта lift (записи: _*)?

StackOverflow https://stackoverflow.com/questions/1124099

  •  13-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

Итак x: _* является Нравится объявление типа , которое указывает компилятору обрабатывать x как повторяющийся параметр (он же список аргументов переменной длины — варарг).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top