Compile time foreach with switch

Johan Fjeldtvedt via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Apr 21 12:19:35 PDT 2017


On Friday, 21 April 2017 at 19:17:32 UTC, Adam D. Ruppe wrote:
> On Friday, 21 April 2017 at 19:09:25 UTC, Johan Fjeldtvedt 
> wrote:
>> void foo(string s) {
>>     enum es = tuple("a", "b", "c");
>>     switch (s) {
>>       foreach (e; es) {
>>         case e:
>>             writeln("matched ", e);
>>             break;
>>       }
>
> Let me remove some surrounding stuff and ask you what happens:
>
>        foreach (e; es) {
>          if(s == c) {
>              writeln("matched ", e);
>              break;
>          }
>        }
>
>
> What does that break do?
>
>
> Then realize that it does exactly the same thing when it is 
> inside a switch... it always breaks the innermost thing, which 
> happens to be this loop. (note that cases are not `breaked`, 
> the switch is.)

*facepalm* Of course! Thanks.


More information about the Digitalmars-d-learn mailing list