El signo más no es tan "ampliamente aceptado" como podría imaginarse para concatenar cadenas. Hay un lote de idiomas que no lo usan, incluyendo Perl y C, y dado que estos son los lugares donde se encuentran las raíces de PHP, tiene sentido que PHP haga lo mismo. Muchos idiomas ni siquiera tienen un operador para eso; tendrías que usar una función concat()
.
PHP está débilmente tipado, y hará una conversión de tipo implícita cuando vea el signo más o un punto. Esto significa que si lo hace $x = "45 inches" + "20 inches";
, PHP establecerá $x
en 65
. Si usa el operador de concatenación de puntos, el resultado será claramente muy diferente.Lo mismo aplica si tiene $y = 5 . 10;
. Esto le dará 510
, pero cámbielo a un signo más y obtendrá un resultado completamente diferente.
Además, pensando lógicamente, lo contrario de un más es un signo menos. Pero eso no se asigna tan fácilmente a la concatenación. (He visto un idioma que lo probó, pero realmente no tenía mucho sentido)
Su preferencia por el signo más como concatenación es puramente una resistencia al cambio cuando se aprende un nuevo idioma (bastante común Lo sé - ¡Conozco a algunas personas que inicialmente odiaban a Python porque carecía de llaves!)
Como alguien que ha estado programado durante mucho tiempo usando muchos idiomas, puedo decirle que prefiero tener un operador de concatenación inequívoco . Usar el mismo operador para la adición y la concatenación en un lenguaje de tipo suelto es pedir problemas; de hecho, diría que es uno de los defectos más grandes de Javascript (y esto viene de alguien que en general es un fanático de Javascript).
Python tiene caracteres fuertes, lo que significa que puede salirse con la suya usando el signo más como el operador de suma y concatenación porque lo obliga a trabajar con el mismo tipo; no puede agregar un número entero a una cadena en Python; si lo necesita, entonces tiene que emitir explícitamente sus tipos, por lo que no hay ambigüedad, al menos no para el compilador.
Sin embargo, todavía hay ambigüedad para el lector; puede que no sea inmediatamente obvio al leer lo que significaba cualquier signo más en el código. En Python es más fácil resolverlo, pero personalmente preferiría tener un operador inequívoco. Pero eso es solo una preferencia personal; si estoy trabajando con Python, Javascript o Visual Basic, entonces tengo que trabajar según sus reglas.
El uso de un + no sería particularmente práctico en un lenguaje de tipo suelto: debe hacer eco de 1 + 2; dar 12 o 3? –
"¿Es solo porque el punto puede convertir otros tipos de variables en una cadena?" Como todo, que espera un tipo de primitivo de cadena para cadenas: Sí, esa es la razón;) – KingCrunch
Me encantaría el operador '+' para la concatenación de cadenas en PHP, el operador '.' solo es confuso y es una de las pocas cosas Odio más sobre PHP –