scala - tag - title seo length
¿Por qué Scala''s Addable está en desuso? (2)
Ampliando la respuesta de Daniel, +
también es un operador muy malo para usar para la inserción de colecciones. Matemáticamente, el operador +
tiene un significado muy convencional, y parte de ese significado es una garantía de asociatividad. Desafortunadamente, la asociatividad es una garantía que no tiene ningún sentido cuando se agrega un Int
a un Vector[Int]
. Como tal, +
siempre fue un operador muy confuso para cualquiera que tuviera algún entrenamiento algebraico.
+:
y :+
son superiores en varios aspectos, entre los que destaca que no hay expectativa de asociatividad. De hecho, la asimetría misma de los operadores implica la no asociatividad, que es precisamente su semántica. Además, +:
y :+
reflejan mutuamente muy bien, y +:
es asociativo por derecho, todo lo cual conspira para proporcionar una API muy natural para anexar y anexar colecciones, respectivamente.
Noté que Addable
está en desuso, mientras que Subtractable
no. ¿Qué está mal con Addable
y por qué es Subtractable
diferente?
El problema es que +
está sobrecargado para concatenar String
a no cadenas. Por lo tanto, siempre que use el método +
en un tipo que no lo tenga, recibirá un mensaje de error que no está relacionado con el problema real: que el tipo que tiene no es el que esperaba.
Hay +:
y :+
para reemplazarlo.