Using map instead of iteration
Don
nospam at nospam.com
Tue Mar 29 04:59:46 PDT 2011
bearophile wrote:
> Russel Winder:
>
>> Perhaps this needs review. All modern language now have this as an
>> integral way of describing a sequence of values.
>
> We have discussed about this not too much time ago. See the enhancement request:
> http://d.puremagic.com/issues/show_bug.cgi?id=5395
>
> D language design is too much un-orthogonal about this, and I'd like to see this situation improved.
>
> Currently there are several separated syntaxes and means to specify an interval:
>
> 1) foreach interval syntax, no stride allowed and the interval is open on the right:
>
> foreach (i; 0 .. 100)
>
>
> 2) Using iota, a badly named range, for intervals open on the right, it supports an optional stride:
>
> foreach (i; iota(100))
>
>
> But empty intervals have different semantics. This runs with no errors, the foreach doesn't loop:
>
> void main() {
> foreach (i; 0 .. -1) {}
> }
Looks like a bug to me.
> 3) The switch range syntax, it uses two dots still, it's closed on the right:
>
> import std.range;
> void main() {
> char c = 'z';
> bool good;
> switch (c) {
> case 'a': .. case 'z':
> good = true;
> break;
> default:
> good = false;
> break;
> }
> assert(good);
> }
But the syntax is NOT case a..b, it's case a .. case b.
a..b always has intervals open on the right. There are no exceptions.
More information about the Digitalmars-d
mailing list