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