Rant after trying Rust a bit
Adam D. Ruppe via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 23 19:02:16 PDT 2015
On Thursday, 23 July 2015 at 21:27:17 UTC, Ziad Hatahet 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
Not really a spaces-to-spaces comparison...
to be honest, I'd probably just write that as:
int median(int a, int b, int c) {
if (a < b) {
if (b < c) return b;
else if (a < c) return c;
else return a;
}
else if (a < c) return a;
else if (b < c) return c;
else return b;
}
You don't need it to be an expression since it is a function, you
can simply write return statements (which I kinda like since then
it is obvious that that value is a terminating condition and not
just the middle of some other calculation).
But if we were using a ternary, some newlines can help with it:
return
(a < b) ? (
(b < c) ? b
: (a < c) ? c
: a
)
: (a < c) ? a
: (b < c) ? c
: b;
Indeed, there I just took your if/else thing and swapped out the
else keyword for the : symbol, then replaced if(cond) with (cond)
?, then changed out the {} for (). It still works the same way.
> Is the compiler always able to always optimize out the function
> call by inlining it, as would be the case with
> a scope?
It should be.
More information about the Digitalmars-d
mailing list