On 12/29/11 12:28 PM, Don wrote:
On 28.12.2011 20:00, Andrei Alexandrescu wrote:
Oh, one more thing - one good thing that could come out of this thread
is abolition (through however slow a deprecation path) of s.length and
s[i] for narrow strings. Requiring s.rep.length instead of s.length and
s.rep[i] instead of s[i] would improve the quality of narrow strings
tremendously. Also, s.rep[i] should return ubyte/ushort, not char/wchar.
Then, people would access the decoding routines on the needed occasions,
or would consciously use the representation.
Yum.
If I understand this correctly, most others don't. Effectively, .rep
just means, "I know what I'm doing", and there's no change to existing
semantics, purely a syntax change.
Exactly!
If you change s[i] into s.rep[i], it does the same thing as now. There's
no loss of functionality -- it's just stops you from accidentally doing
the wrong thing. Like .ptr for getting the address of an array.
Typically all the ".rep" everywhere would get annoying, so you would write:
ubyte [] u = s.rep;
and use u from then on.
I don't like the name 'rep'. Maybe 'raw' or 'utf'?
Apart from that, I think this would be perfect.
Yes, I mean "rep" as a short for "representation" but upon first sight
the connection is tenuous. "raw" sounds great.
Now I'm twice sorry this will not happen...
Andrei