Allowing Expressions such as (low < value < high)
Ary Borenszweig via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Sep 4 13:45:38 PDT 2014
On 9/4/14, 5:03 PM, "Nordlöw" wrote:
> Are there any programming languages that extend the behaviour of
> comparison operators to allow expressions such as
>
> if (low < value < high)
>
> ?
>
> This syntax is currently disallowed by DMD.
>
> I'm aware of the risk of a programmer misinterpreting this as
>
> if ((low < value) < high)
>
> Is this the reason why no languages (including D allows it).
>
> I'm asking for in some cases, where value is a long expression, it would
> be a nice syntatic sugar to use.
Crystal has that syntax:
~~~
def foo
puts "Computing!"
a = 0
10.times do |i|
a += i
end
a
end
if 0 < foo <= 45
puts "Yes"
end
~~~
Prints:
Computing!
Yes
That's because the middle expression in the comparison is first assigned
to a temporary variable, so `foo` is only invoked once. This makes both
the code more readable, efficient and saves the programmer from having
to save that value to a temporary variable itself.
I guess D doesn't have it because it has (...why?) to be compatible with
C's semantic. Also, as you can see, it's not that trivial to implement
because you need to assign that value first to a temporary variable.
More information about the Digitalmars-d-learn
mailing list