Strings in DWT
Frits van Bommel
fvbommel at REMwOVExCAPSs.nl
Mon Feb 25 05:05:29 PST 2008
DBloke wrote:
>
> True, I still don't get why it is believed using + as a concatenation
> operator is so confusing for a string?
It's a completely different operation that has different semantics.
Addition is commutative while concatenation isn't; i.e. a + b == b + a
for any numeric type, but a ~ b is not generally interchangeable with b ~ a.
This comes into play in D's operator overloading as well: if the
compiler can't compile a+b as a.opAdd(b) or b.opAdd_r(a) it then tries
a.opAdd_r(b) and b.opAdd(a) (i.e. it tries to compile as b+a instead).
This transformation wouldn't be correct for concatenations, so that has
a different operator that isn't commutative and will therefore skip the
second step.
(see the section "Binary Operator Overloading" on
<http://www.digitalmars.com/d/1.0/operatoroverloading.html>)
> coming from a C/C++ and Java
> background I personally find ~ confusing it somehow reminds me of the
> two's compliment operator.
Does template instantiation also remind you of negation?
Does multiplication remind you of pointer dereferencing?
Does bitwise-and remind you of taking an address?
I don't see the problem with unary and binary use of an operator doing
different things as long as the unary meaning doesn't make any sense for
binary use and the binary meaning doesn't make any for unary use.
Though I must admit that the unary use of 'is' had me a bit confused for
a while when I first tried to use it, but I don't think that was because
of the binary use...
More information about the Digitalmars-d-dwt
mailing list