about "with statement"

Maxim Fomin maxim at maxim-fomin.ru
Sun Jun 9 19:41:22 PDT 2013


On Sunday, 9 June 2013 at 23:48:39 UTC, Ali Çehreli wrote:
> On 06/09/2013 11:09 AM, deadalnix wrote:
>
> > On Sunday, 9 June 2013 at 10:22:22 UTC, Jonathan M Davis
> wrote:
>
> >> I'd argue that it would make code harder to read, because it
> hides where
> >> the variables are coming from.
>
> +1. A friend of mine is "still experimenting" with 'with' and I 
> hate reading his code. :)
>
> with (new C()) {
>     i = 42;    // is that a member of C?
>     j = 43;    // how about that?
>     foo();     // and that?
>     bar();     // and that?
> }
>
> Thanks for obfuscating! :)
>
>
> Ali

import std.stdio;

int foo()
{
    writeln("foo");
    return 0;
}

void main()
{
    short i;
    try  switch (i)
    {
       writeln(i);
       default:
          writeln("default 1");
          throw new Exception("");
    }
    catch(Exception e)  do switch(foo())
    {
       default:
          writeln("default 2");
    } while(false);
    finally if (i) switch(i) { writeln("do"); default: }
    else {}
}

One bug with this funny stuff sharing common scoped statement is

import std.stdio;

bool foo()
{
    writeln("foo");
    return true;
}

void main()
{
    short i;
    switch(i) if (foo())
    {
       default:
    }
    else
       foo();
}

It seems that if statement even doesn't reach backend.


More information about the Digitalmars-d mailing list