ElementType!string

qznc qznc at web.de
Sun Aug 25 12:51:48 PDT 2013


On Sunday, 25 August 2013 at 19:38:52 UTC, Paolo Invernizzi wrote:
> On Sunday, 25 August 2013 at 19:25:08 UTC, qznc wrote:
>> Apparently, ElementType!string evaluates to dchar. I would 
>> have expected char. Why is that?
>
> I think is because they are iterated by ranges as dchar, that's 
> equivalent to iterating the unicode symbol.
>
> If they were iterated by char, you would get during the 
> iteration the singles pieces of the utf8 encoding, and usually 
> that is not what an user is expecting.
>
> Note on the other side that static assert( is(typeof(" "[0]) == 
> immutable(char)) ), so you can iterate the string by chars 
> using the index.
>
> - Paolo Invernizzi

Thanks, somewhat unintuitive.

This also seems to the explanation, why the types documentation 
decribes char as "unsigned 8 bit UTF-8", which is different than 
ubyte "unsigned 8 bit".

Confirmed by this unittest:

string raw = "Maß";↵
assert(raw.length == 4);↵
assert(walkLength(raw)== 3);


More information about the Digitalmars-d-learn mailing list