The more interesting question
H. S. Teoh
hsteoh at quickfur.ath.cx
Wed May 16 10:16:36 PDT 2012
On Wed, May 16, 2012 at 01:07:54PM -0400, Steven Schveighoffer wrote:
[...]
> For example:
>
> auto str = "abcabc";
> assert(str[0..3] == str[3..$]); // pass
> assert(str[0..3] is str[3..$]); // fail
>
> which is very counterintuitive.
[...]
I don't find that counterintuitive at all. To me, 'is' concerns memory
identity: are the two things actually one and the same _in memory_? (In
this case, no, because they are different chunks of memory that just
happens to contain the same values.) Whereas '==' concerns logical
identity: do the two things represent the same logical entity? (In this
case, yes, these two arrays contain exactly the same elements.)
I'd argue that 99% of the time, what you want is logical identity (i.e.,
==), not memory identity.
T
--
Stop staring at me like that! You'll offend... no, you'll hurt your eyes!
More information about the Digitalmars-d
mailing list