Bill Baxter Wrote:
> On Thu, Jan 8, 2009 at 5:36 PM, bearophile <[email protected]> wrote:
> > Brad Roberts:
> >
> >> Restating in the form of a question... When would you _ever_ want {...}
> >> to not form a scope?
> >
> > Recently I have shown a possible syntax for express general unsafeties in D
> > code, for example:
> >
> > unsafe (bounds, overflow) {
> > ... // here there's no array bound checks, not integral overflow checks
> > }
> >
> > I think this safe(...){...} and unsafe(...){...} don't need to form a
> > scope, like static if.
> >
> > --------------------------
> >
> > Bill Baxter:
> >
> >>I do think it would be nice if there was some kind of alternate non-scope
> >>block delimiter syntax in D. When you have static ifs mixed with regular
> >>ifs and versions it starts to be pretty difficult to see the flow of
> >>things. Something like
> > static if (x) ::
> > some stuff
> > ::<
> >
> > Probably I don't understand that syntax.
>
> It just means curly braces. I don't really care what syntax it is,
> just something besides { and } for non-scope blocks.
>
> > A more full example may help me understand it. But if I understand it
> > correctly, then I don't like that syntax. The {} add a little of noise, but
> > help you know for sure inside where you are
>
> Do they really help you see where you are in something like this:
>
> void Do_something(T)(int i)
> {
> if (i == 0) {
> static if (is(T==A)) {
> A.SomeAlias x;
> }
> else static if(is(T==B)) {
> B.SubType x;
> }
> else {
> T x;
> }
> x = ... whatever
> }
> else {
> int y = x;
> }
> }
>
> To me it's hard to see those variable declarations as being anything
> other than scoped to the blocks they're in.
> So all I'm saying is if we could have some different delimiters for
> non-scope blocks then it might be nice, and make it easier to see when
> scopes are ending and when they are not.
>
> --bb
I'd do:
void Do_something(T)(int i)
{
if (i == 0)
{
static if (is(T==A))
{
A.SomeAlias x;
}
else static if(is(T==B))
{
B.SubType x;
}
else
{
T x;
}
x = ... whatever
}
else
{
int y = x;
}
}
it's parallel programming...