string is rarely useful as a function argument

Don nospam at nospam.com
Thu Dec 29 10:28:37 PST 2011


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.

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.


More information about the Digitalmars-d mailing list