You can wind up in the same trap in VB/VBA as well. It baffles me that in this current century there are still languages where text concatenation symbols and mathematical operators are the same character.
It’s even worse in the case of VB because you can also use & explicitly to concatenate strings, whereas + can be either a mathematical operator or a string concatenator depending on context and the types of variables you’ve put it between, which VB may or may not decide to cast into strings depending on an arcane set of conditions that nobody understands or remembers. So the solution was right there all along, i.e. just make & the only concatenator and reserve + for math only. But that would be too much like right.
Yes, and PHP can even implicitly (or explicitly!) cast variables between different types. Dot (.) is for strings and + is for math. It’s one of the few things about PHP that makes sense.
You can wind up in the same trap in VB/VBA as well. It baffles me that in this current century there are still languages where text concatenation symbols and mathematical operators are the same character.
It’s even worse in the case of VB because you can also use & explicitly to concatenate strings, whereas + can be either a mathematical operator or a string concatenator depending on context and the types of variables you’ve put it between, which VB may or may not decide to cast into strings depending on an arcane set of conditions that nobody understands or remembers. So the solution was right there all along, i.e. just make & the only concatenator and reserve + for math only. But that would be too much like right.
There’s nothing wrong with overloading an operator for other classes; the problem is the unexpected typecasting.
Python, for example, will allow you to “add” strings to concatenate, but will throw a type error if you attempt to add a string to an integer.
PHP uses . which works perfectly fine, I’ve never encountered this nonsense before
Yes, and PHP can even implicitly (or explicitly!) cast variables between different types. Dot (.) is for strings and + is for math. It’s one of the few things about PHP that makes sense.