length's type.
    Kevin Bailey 
    keraba at yahoo.com
       
    Thu Feb  8 16:54:36 UTC 2024
    
    
  
Arafel,
You're certainly correct. Priorities change. It used to be 
thought that backwards compatibility was the way to attract 
developers. But today the keyword is "safety".
Apparently 2022 was the year of the C++ successor. Some features 
of D were mentioned in the discussion but D as a candidate was 
not. Maybe it's time to re-visit the priorities.
Anyways, my post was simply to highlight the issue.
On Thursday, 8 February 2024 at 15:26:16 UTC, kdevel wrote:
>
> Elegant and correct is this version:
>
> ```d
> import std.stdio;
>
> int main()
> {
>         char[] something = ['a', 'b', 'c'];
>
>         writeln("len: ", something.length);
>         writeln("typeid(something.length): ",
>                 typeid(something.length));
>
>         writeln ("i: -1");
>         foreach (i, _; something)
>                 writeln("i: ", i);
>         return 0;
> }
> ```
>
> But it is still a bit too "clever" in the `foreach` statement 
> due to the unused variable `_`.
It has a bigger problem. What happens when I change the code in 
the loop but forget to change the code outside the loop? This is 
why people complain about Python's lack of a do/while loop. So 
no, not elegant.
Additionally, it doesn't address the issue. It still requires me 
to both realize the issue with comparing an int to length's 
mystery type, as well as to fix it for the compiler.
(And it's beside the fact that the start value could just as 
easily be an int (parameter for example) that could take a 
negative value. This was the case for one of my cases.)
    
    
More information about the Digitalmars-d-learn
mailing list