Le signe plus n'est pas aussi "largement accepté" que vous imaginez pour la concaténation de chaînes. Il y a un lot de langages qui ne l'utilisent pas, y compris Perl et C, et puisque ce sont là les racines de PHP, il est logique que PHP le suive. Beaucoup de langues n'ont même pas d'opérateur pour cela; vous devez utiliser une fonction concat()
.
PHP est faiblement typé et fera une conversion de type implicite lorsqu'il verra le signe plus ou un point. Cela signifie que si vous faites $x = "45 inches" + "20 inches";
, PHP va définir $x
à 65
. Si vous utilisez l'opérateur de concaténation de points, le résultat sera clairement différent.La même chose s'applique si vous avez $y = 5 . 10;
. Cela vous donnera 510
, mais changez-le en signe plus et vous obtenez un résultat complètement différent. En outre, en pensant logiquement, le contraire d'un plus est un moins. Mais cela ne correspond pas si facilement à la concaténation. (J'ai vu une langue qui l'a essayé, mais cela n'a vraiment pas de sens)
Votre préférence pour le signe plus comme concaténateur est purement une résistance à changer lors de l'apprentissage d'une nouvelle langue chose - je connais quelques personnes qui détestaient initialement Python parce qu'il manque d'accolades!)
Comme quelqu'un qui a programmé pendant longtemps en utilisant beaucoup de langues, je peux vous dire que je préfère de loin avoir un opérateur de concaténation univoque . Utiliser le même opérateur pour l'addition et la concaténation dans une langue faiblement typée demande des problèmes; en fait, je dirais que c'est l'un des plus gros défauts de Javascript (et cela vient de quelqu'un qui en général est fan de Javascript). Python est stronly-typed, ce qui signifie qu'il peut s'en tirer en utilisant le signe plus comme opérateur d'addition et de concaténation car il vous oblige à travailler avec le même type; vous ne pouvez pas ajouter un entier à une chaîne en Python; Si vous en avez besoin, vous devez explicitement lancer vos types, donc il n'y a pas d'ambiguïté, du moins pas pour le compilateur. Cependant, il existe toujours une ambiguïté pour le lecteur - il n'est pas toujours évident de lire ce que l'on entend par un signe plus donné dans le code. C'est plus facile en Python de s'en sortir, mais personnellement, je préférerais avoir un opérateur sans ambiguïté. Mais c'est juste une préférence personnelle; Si je travaille avec Python, Javascript ou Visual Basic, je dois travailler selon leurs règles.
L'utilisation d'un + ne serait pas particulièrement pratique dans un langage faiblement typé: devrait écho 1 + 2; donner 12 ou 3? –
"Est-ce juste parce que le point peut convertir d'autres types de variables en chaînes de caractères?" Comme tout ce qui attend une chaîne de type primitive cast à des chaînes: Oui, c'est la raison;) – KingCrunch
J'aimerais l'opérateur '+' pour la concaténation de chaînes en PHP, l'opérateur '. 'Est seulement confus et c'est l'une des rares choses Je déteste le plus à propos de PHP. –