Давайте разберемся с понятием, связанным с этим вопросом, между '::', '+:' и ': +':
есть разница
1-й оператор :
' :: ' - это правый ассоциативный оператор , который работает специально для списков
scala> val a :: b :: c = List(1,2,3,4)
a: Int = 1
b: Int = 2
c: List[Int] = List(3, 4)
2-й оператор :
' +: ' - это также правый ассоциативный оператор , но он работает на seq, который является более общим, чем просто список.
scala> val a +: b +: c = List(1,2,3,4)
a: Int = 1
b: Int = 2
c: List[Int] = List(3, 4)
3-й оператор :
': + ' - это также левый ассоциативный оператор , но он работает на seq, который является более общим, чем просто список
scala> val a :+ b :+ c = List(1,2,3,4)
a: List[Int] = List(1, 2)
b: Int = 3
c: Int = 4
Ассоциативность оператора определяется последним символом оператора. Операторы, оканчивающиеся на двоеточие ‘:’, ассоциированы справа. Все остальные операторы левоассоциативны.
A левоассоциативная двоичная операция e1; op; e2 интерпретируется как e1.op (e2)
Если op ассоциативно справа , та же операция интерпретируется как {val x = e1; e2.op (x)}, где x - свежее имя.
Теперь приходит ответ на ваш вопрос :
Так что теперь, если вам нужно получить первый и последний элемент из списка, используйте следующий код
scala> val firstElement +: b :+ lastElement = List(1,2,3,4)
firstElement: Int = 1
b: List[Int] = List(2, 3)
lastElement: Int = 4