How to foreach over a DList?
monarch_dodra
monarchdodra at gmail.com
Tue Apr 1 06:53:57 PDT 2014
On Tuesday, 1 April 2014 at 13:30:21 UTC, Meta wrote:
> On Tuesday, 1 April 2014 at 12:30:03 UTC, monarch_dodra wrote:
>> I fixed this not too long ago. Long story short, the "~="
>> implementations were made of fail.
>>
>> Just change those "~=" for "insertBack" and you should be fine.
>
> That aside, why is it necessary to cast 1, 2 and 3 to ubyte
> when adding them to the DList? Is this a problem with DList or
> with D?
D has a "feature", where you can't assign something big into
something small. EG, you can't assign an int to a byte. This
avoids dangerous overflow.
That said, this is *usually* transparent, because D *also* has
value range analysis. So what this means is that when you write:
"ubyte b = 1;"
Even though "1" is actually an int, the compiler knows it is int
he 0-255 range, so the assignment is fine.
In contrast, if you *pass* "1" to the DList, you lose that info,
and the DList will complain that you are trying to assign an int
to a ubyte.
For what it's worth, 2.066 introduces uniform initialization, so
this will become valid, and is somewhat less intrusive:
list1.insertBack(ubyte(1));
list1.insertBack(ubyte(2));
list1.insertBack(ubyte(3));
More information about the Digitalmars-d-learn
mailing list