if(arr) now a warning

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Wed Apr 29 21:23:03 PDT 2015


On Thursday, 30 April 2015 at 02:44:22 UTC, Steven Schveighoffer 
wrote:
> On 4/29/15 8:35 PM, Martin Nowak wrote:
>> Occasionally I'm using if (auto ary = func()), despite the 
>> fact that the
>> semantics are wrong, but it's nice and short and works as long 
>> a func
>> always returns null instead of empty slices.
>
> I wonder if it's possible to fix this, as it is, IMO, the only 
> legitimate drawback of this change. Could we make the following 
> work?
>
> if((auto ary = func()).length)

Another thing to consider is how this is a general problem. It's 
not that atypical to want to declare a variable in the if 
condition and then use a function call on it for the actual 
condition, which it looks like your suggestion would work with, 
but if we consider a solution like that, I think that we need to 
consider the general case and not just checking for length on 
arrays.

Another syntax might be something like

if(auto ary = func(); ary.length)

and make it similar to how for loops work. That would also allow 
you to check stuff other than what the variable gets initialized 
with or to use it in a more complicated expression. e.g.

if(auto ary = func(); foo(ary))

It's also arguably more consistent with other language features. 
But regardless, the general idea of what you're proposing could 
provide some good syntactic sugar.

- Jonathan M Davis


More information about the Digitalmars-d mailing list