Продолжая ответ Даниэля, +
также очень плохой оператор для вставки коллекций. Математически оператор +
имеет очень условное значение, и часть этого значения является гарантией ассоциативности. К сожалению, ассоциативность - это гарантия, которая не имеет никакого смысла, когда вы добавляете Int
к Vector[Int]
. Таким образом, +
всегда был очень запутанным оператором для любого, кто имел какую-либо алгебраическую подготовку.
+:
и :+
превосходят по нескольким параметрам, не последним из которых является отсутствие ожидания ассоциативности. На самом деле, сама асимметрия операторов подразумевает не -ассоциативность, что является именно их семантикой. Кроме того, +:
и :+
очень хорошо отражают друг друга, а +:
является ассоциативно-правым, и все это обеспечивает очень естественный API для prepend и append коллекции соответственно.