On 2/10/11, Walter Bright <newshou...@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: } Not everybody will like this since it wastes a lot of vertical space. But at least it fits in 80 columns! (:p). Plus you don't need to create a temporary variable. The cool thing is the compiler will warn you if you miss out setting the default switch, which is something you won't get with if/elseif's. The final switch statement is even better when using enums. Added another enum member, but forgot to update the final switch statement? Boom, compiler error! It's a great thing for avoiding bugs imo.