On Tuesday, 10 July 2018 at 12:10:27 UTC, Jonathan M Davis wrote:
On Tuesday, 10 July 2018 05:38:33 MDT kdevel via
Digitalmars-d-learn wrote:
I would like to suggest an extension of the language by
introducing
static return Expression_opt;
which shall have the effect of a return plus that the
remaining lines in the current block are treated as if they
were enclosed in an else block.
Well, you can propose it, but it really doesn't fit with how
static if works. static if doesn't have anything to do with
control flow, whereas what you're proposing here would, which
would arguably make it that much more confusing. I confess that
I don't understand what the problem is with simply adding an
else block. It's simple, and it works right now without any
language changes.
- Jonathan M Davis
Actually, it's kind of controlling "compile-time control flow".
If you had
auto func(T)(T args)
{
static if (T.length == 0)
static return;
return args[0];
}
then `static return;` would instruct the compiler to skip the
rest of the code and only insert a `return;`, omitting any code
that follows. So the result in above case with `T.length == 0`
would be:
void func()
{
return;
}
To me that sounds like a very nice feature, considering that I
often found myself in the same situation where I didn't feel like
the static `else` statement was really necessary (comparing to
the usual way to control flow (at run-time) with convential
if-else statements).