'with(Foo):' not allowed, why?
Fgr via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Aug 9 16:11:55 PDT 2014
On Saturday, 9 August 2014 at 09:52:02 UTC, Messenger wrote:
> On Saturday, 9 August 2014 at 09:11:53 UTC, Marc Schütz wrote:
>> On Saturday, 9 August 2014 at 03:46:05 UTC, timotheecour wrote:
>>> On Wednesday, 6 August 2014 at 17:03:23 UTC, Timothee Cour via
>>> Digitalmars-d-learn wrote:
>>>> Is there a reason why 'with(Foo):' is not allowed, and we
>>>> have to
>>>> use with(Foo){...} ?
>>>> It would be more in line with how other scope definitions
>>>> work (extern(C)
>>>> etc)
>>>
>>> ping, anyone?
>>
>> Probably for syntactic reasons: `with` is a statement, while
>> `extern(C)`, `@safe`, `private` etc. are attributes.
>>
>> But the idea is certainly nice, it would only require a simple
>> rewriting rule.
>
> Also a way to cancel such...
>
> struct Foo {
> @nogc:
>
> void bar() {
> with (someEnum):
> // ...
> !:with (someEnum) // ?
> // ...
> }
>
> !:@nogc // ?
>
> void gcFunction() { /*...*/ }
> }
with(x):
without(x); // cancel
without(); // cancel following with() declarations order.
with(x):
with(y):
with(z):
without()// no more z
without(x) // no more x
without() // only one remaining so no more y
But isn't the with expression considered as a bad practice
(whatever the lang. is) ?
More information about the Digitalmars-d-learn
mailing list