| |
| Posted by user1234 in reply to mw | PermalinkReply |
|
user1234
| On Saturday, 21 May 2022 at 15:06:31 UTC, mw wrote:
> On Saturday, 21 May 2022 at 11:59:42 UTC, Adam D Ruppe wrote:
>> On Saturday, 21 May 2022 at 03:01:39 UTC, mw wrote:
>>> Yes! let's call it "loop counter"
>>
>> It isn't a loop counter. It is an index back into the original source. Consider:
>>
>> foreach(INDEX, dchar character; "“”")
>> writeln(INDEX); // 0 then 3
>
> Wow, thus surprised me again!
>
> 1) First, why not 0 then 4? Since dchar is 32 bits.
>
> 2) Second, compare:
>
> import std;
> void main()
> {
> dstring ds = "“”";
> writeln(ds.length);
> foreach(INDEX, dchar character; ds)
> writeln(INDEX, character); // 0 then
> }
>
> Output:
> 2
> 0“
> 1”
>
> Explanations?
Adam D Ruppe expamples implies auto (hidden) decoding, which is a special case, so it reads 3 bytes to decode the the 1st glyph. The word "counter" is actually correct if the foreach'd aggregate is truely capable of random accesses. That is the case for your second version, that iterated over a dstring.
>
> If it's "loop counter", isn't the behavior more consistent?
|