В чем разница между :: и ::: в Scala - PullRequest
68 голосов
/ 04 июля 2011
val list1 = List(1,2)
val list2 = List(3,4)

тогда

list1::list2 returns:

List[Any] = List(List(1, 2), 3, 4)

list1:::list2 returns:

List[Int] = List(1, 2, 3, 4)

Я видел, что книга пишет, что при использовании :: это также приводит к List[Int] = List(1, 2, 3, 4). Моя версия Scala 2.9.

Ответы [ 2 ]

98 голосов
/ 04 июля 2011

:: добавляет один элемент, а ::: - полный список. Таким образом, если вы поставите List перед ::, он будет воспринят как один элемент, что приведет к вложенной структуре.

6 голосов
/ 27 ноября 2018

В целом:

  • :: - добавляет элемент в начало списка и возвращает список с добавленным элементом
  • ::: - объединяет два списка и возвращает объединенный список

Например:

1 :: List(2, 3)             will return     List(1, 2, 3)
List(1, 2) ::: List(3, 4)   will return     List(1, 2, 3, 4)

В вашем конкретном вопросе использование :: приведет к списку в виде списка ( вложенный список ), поэтому я считаю, что вы предпочитаете использовать :::.

Ссылка: Список классов на официальном сайте

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