More on Rust

Christopher Nicholson-Sauls ibisbasenji at gmail.com
Fri Feb 11 12:54:33 PST 2011


On 02/10/11 13:49, Andrej Mitrovic wrote:
> On 2/10/11, Walter Bright <newshound2 at digitalmars.com> wrote:
>> auto x = (localtime().hours >= 8) ? "awake!" : "asleep, go away.";
> 
> Aye, a one liner!
> 
> I hate seeing things like this:
> if (funcall())
> {
>     var = "foo";
> }
> else
> {
>     var = "bar";
> }
> 
> So much clutter instead of using the simple:
> var = funcall() ? "foo" : "bar";
> 
> I also see this sometimes:
> 
> auto var = funcall();
> if (var == "foo" || var == "bar" || var == "foobar" || var == "barfoo")
> {
>     // some complex code
> }
> else if (var == "blue" || var == "green")
> {
>     // some complex code
> }
> else if ()// more and more code..
> { }
> 
> But not many people seem to know that D supports strings in case statements:
> switch(funcall())
> {
>     case "foo":
>     case "bar":
>     case "foobar":
>     case "barfoo":
>     {
>         // complex code
>     }
>     break;
>     case "blue":
>     case "green":
>     {
>        // complex code
>     }
>     break;
>     default:
> }
> 

Even better:

switch( funcall() ) {
    case "foo", "bar", "foobar", "barfoo": {
        // complex code
        break;
    }

    case "blue", "green": {
        // complex code
        break;
    }

    default:
        // do nothing -- i like to comment defaults
}

Also often forgotten, that 'case' clauses take an argument list, not
just an expression.  And yeah, in this case at least... it still fits in
80 columns.  (I prefer 90 myself, but it's moot.)

-- Chris N-S


More information about the Digitalmars-d mailing list