More on Rust

spir denis.spir at gmail.com
Fri Feb 11 02:59:58 PST 2011


On 02/11/2011 08:39 AM, Jim wrote:
> Jacob Carlborg Wrote:
>
>> On 2011-02-10 20:15, Walter Bright wrote:
>>> Nick Sabalausky wrote:
>>>> "bearophile"<bearophileHUGS at lycos.com>  wrote in message
>>>> news:iivb5n$na3$1 at digitalmars.com...
>>>>> auto x;
>>>>> if (localtime().hours>= 8) {
>>>>> x = "awake!"
>>>>> } else {
>>>>> x = "asleep, go away."
>>>>> }
>>>>> log "I'm " + x;
>>>>>
>>>>
>>>> That would be really nice to have in D.
>>>
>>>
>>> auto x = (localtime().hours>= 8) ? "awake!" : "asleep, go away.";
>>
>> For this simple if statement it works but as soon you have a few lines
>> in the if statement it will become really ugly. But one could wrap the
>> if statement in a function instead. In other languages where statements
>> really are expressions this works:
>>
>> auto x = if (localtime().hours>= 8)
>>               "awake!";
>>            else
>>               "asleep, go away.";
>>
>> log "I'm " + x;
>
>
>
> Other languages may have bloated syntaxes, with no particular benefit.
>
>
> auto x = localtime().hours>= 8 ?
> 	"awake!"
> 	:
> 	"asleep, go away.";
>
> log( "I'm " ~ x );
>
>
> If the expressions are complex I put them in functions.
> 1) It hides and isolates details, which allows you to focus on the more abstract aspects.
> 2) It gives the expression a name and facilitates reuse.

Agreed.
But in practice I often end up beeing dubious about seemingly nice features 
like, precisely, the ternary operator. In languages that do not have such a 
nicety people end up writng eg:
     if (localtime().hours>= 8) x = awake;
     else x = "asleep, go away.";
Apart from the very mild annoyance, I guess, of writing twice "x =", this is 
all gain: code is both more compact and legible.
Precisely, because the ternary operator is a bit weird syntactically (and not 
that commonly needed and used in real code), people feel, just like you, the 
need to clarify it in code, finally using more vertical space. Note that the 
case here is the simplest possible, expressions being plain literal constants. 
I personly only consume 3 lines:
     auto x = (localtime().hours>= 8)
         ? "awake!"
         : "asleep, go away.";
What do you think?

Denis
-- 
_________________
vita es estrany
spir.wikidot.com



More information about the Digitalmars-d mailing list