Почему (копирование), добавляемое к Seq в Scala, определяется как: + и не просто + как в Set и Map?
Scala Карта и набор определяют оператор +, который возвращает копию структуры данных с одним добавленным к ней элементом. Эквивалентный оператор для Seq обозначается :+.
Есть ли причина для этой несогласованности?
Ответ 1
В Map и Set нет понятия добавления (+:) или добавления (:+), так как они не упорядочены. Чтобы указать, какой из них (добавление или добавление) вы используете, добавлен :.
Не путайте порядок аргументов, в scala, если метод заканчивается на: он применяется в обратном порядке (не a.method(b), но b.method(a))
Ответ 2
FYI, принятый ответ вовсе не причина. Вот почему.
% scala27
Welcome to Scala version 2.7.7.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_06).
scala> Set(1, 2, 3) + " is the answer"
res0: java.lang.String = Set(1, 2, 3) is the answer
scala> List(1, 2, 3) + " is the answer"
warning: there were deprecation warnings; re-run with -deprecation for details
res1: List[Any] = List(1, 2, 3, is the answer)
Никогда не недооценивайте, как долго растягиваются что-то вроде any2stringadd.