If Statement with Declaration
Steven Schveighoffer via Digitalmars-d
digitalmars-d at puremagic.com
Fri Nov 4 07:50:33 PDT 2016
On 11/4/16 10:10 AM, Steven Schveighoffer wrote:
> On 11/3/16 6:29 PM, 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?
>
>
> Hm... what about something like:
>
> struct BoolCond(T, string cond)
> {
> T val;
> bool opCast(B)() if(is(B == bool))
> {
> return mixin("val " ~ cond);
> }
Of course, I missed this:
alias val this;
-Steve
More information about the Digitalmars-d
mailing list