On Thursday, 3 November 2016 at 22:29:34 UTC, Jerry wrote:
So I was thinking of a way of extending if statements that have
declarations. The following being as example of the current use
of if statements with declarations:
if(int* weDontPollute = someFunc())
{
// use weDontPollute
}
That's great and all, but it only works by checking if the
variable evaluates to true or false. Which is fine for a
pointer but otherwise useless for anything else, like integers
where zero is usually valid input (index for array). So
currently the only way to do something like this in the
language, that i've found, is to use a for statement.
for(int i = someFunc(); i >= 0;)
{
// use i
break;
}
Not that ideal to use a for statement. It makes it hard to read
and if the break condition isn't there it might very well be an
infinite loop. So I was thinking of some sort of syntax like
this:
if(int i = someFunc(); i >= 0)
{
// use i
}
Thoughts on this sort of feature?
Hi, i refactored some templates[1] i had, so that you can provide
your own predicate functions.
Variant 1 eager version:
auto when(alias pred, alias fun, T)(T type = T.init)
Variant 2 a lazy version, uses two templates:
auto when(alias pred, T)(T type = T.init)
auto call(alias fun, T)(T type)
check/modify the examples found here
[1] http://melpon.org/wandbox/permlink/g7V0gj4V7SGPjwqL
*OT is dpaste broken (cant seem to create new pastes) or is it
just me?