Rant after trying Rust a bit
Timon Gehr via Digitalmars-d
digitalmars-d at puremagic.com
Sun Jul 26 08:18:12 PDT 2015
On 07/25/2015 02:19 PM, Andrei Alexandrescu wrote:
> On 7/23/15 5:26 PM, Ziad Hatahet via Digitalmars-d wrote:
>> On Thu, Jul 23, 2015 at 2:00 PM, Adam D. Ruppe via Digitalmars-d
>> <digitalmars-d at puremagic.com <mailto:digitalmars-d at puremagic.com>> wrote:
>>
>> I think it is actually kinda pretty:
>>
>>
>> What about:
>>
>> int median(int a, int b, int c) {
>> return (a<b) ? (b<c) ? b : (a<c) ? c : a : (a<c) ? a : (b<c) ? c
>> : b;
>> }
>>
>> vs.
>>
>> def median(a: Int, b: Int, c: Int) =
>> if (a < b) {
>> if (b < c) b
>> else if (a < c) c
>> else a
>> }
>> else if (a < c) a
>> else if (b < c) c
>> else b
>
> This is a wash. If we want to discuss good things in Rust
(The quoted bit is Scala code.)
> we could get inspiration from, we need relevant examples. -- Andrei
>
What do you mean?
I think it is pretty obvious that 'if'/'else' is "better" syntax than
'?:'. It e.g. does not leave the separation of context and condition up
to operator precedence rules and is hence easier to parse by a human.
Not that I'd care much, but it is inconvenient to be asked not to use
the ternary operator in team projects just because it has a badly
engineered syntax.
Also, we have (int x){ return r; }, auto foo(int x){ return r; }, (int
x)=>r, but not auto foo(int x)=>r. It's an arbitrary restriction.
(BTW: To all the people who like to put the ternary operator condition
into parens in order to imitate if: A convention that makes more sense
here is to put the entire (chained) ternary expression in parentheses.)
More information about the Digitalmars-d
mailing list