Подтвердить что ты не робот

Почему Scala Добавляется устаревшим?

Я заметил, что Addable устарел, а Subtractable - нет. Что случилось с Addable и почему Subtractable отличается?

4b9b3361

Ответ 1

Проблема заключается в том, что + перегружается, чтобы объединить String в нестрочные. Таким образом, всякий раз, когда вы используете метод + для типа, который его не имеет, вы получите сообщение об ошибке, которое не связано с реальной проблемой: тип, который у вас есть, не тот, который вы ожидали.

Там +: и :+, чтобы заменить его.

Ответ 2

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

+: и :+ превосходят по нескольким направлениям, не последним из которых является отсутствие ожиданий ассоциативности. В самом деле, сама асимметрия операторов подразумевает неассоциативность, которая является именно их семантикой. Кроме того, +: и :+ очень хорошо зеркально отражают друг друга, а +: является право-ассоциативным, все из которых вступает в сговор с целью обеспечить очень естественный API для сбора и добавления соответственно.