Hi all,
I think it’s a simple question but I couldn’t find in docs.
Is there a macro already defined in ruby for returning the “bound” of a
value:
ex:
BOUND(1, 5, 10) => 5
BOUND(10, 5, 100) => 5
BOUND(1, 50, 10) => 10
Hi all,
I think it’s a simple question but I couldn’t find in docs.
Is there a macro already defined in ruby for returning the “bound” of a
value:
ex:
BOUND(1, 5, 10) => 5
BOUND(10, 5, 100) => 5
BOUND(1, 50, 10) => 10
2008/10/24 Me Me [email protected]:
I think it’s a simple question but I couldn’t find in docs.
Is there a macro already defined in ruby for returning the “bound” of a
value:ex:
BOUND(1, 5, 10) => 5
BOUND(10, 5, 100) => 5
BOUND(1, 50, 10) => 10
First of all, there are no macros in Ruby. If anything you would be
looking for a method (or function). How is your “bound” defined?
Cheers
robert
On Fri, Oct 24, 2008 at 13:19, Me Me [email protected] wrote:
thanks for answering:
in my case it’s something I can easy implement with if-clause, but I
wanted to know if this could be done in one single line
def bound(min, value, max)
(value > max) ? max : ((value < min) ? min : value
end
I propose replacing > with >=, because in case when value==max it will
be evaluated faster
def bound(min, value, max)
(value >= max) ? max : ((value < min) ? min : value
end
2008/10/24 Me Me [email protected]:
if(value < min)
return min
endreturn value
end
irb(main):001:0> def BOUND(min,val,max) val >=max ? max : val < min ?
min : val end
=> nil
irb(main):002:0> BOUND(10,0,100)
=> 10
irb(main):003:0>
irb(main):004:0* BOUND(10,200,100)
=> 100
irb(main):005:0> BOUND(10,150,100)
=> 100
irb(main):006:0> BOUND(10,50,100)
=> 50
Cheers
robert
thanks all
I though it was something already implemented inside ruby, I guess the
same for MIN, MAX
bye
thanks for answering:
in my case it’s something I can easy implement with if-clause, but I
wanted to know if this could be done in one single line
def bound(min, value, max)
if(value > max)
return max
end
if(value < min)
return min
end
return value
end
Robert K. wrote:
2008/10/24 Me Me [email protected]:
I think it’s a simple question but I couldn’t find in docs.
Is there a macro already defined in ruby for returning the “bound” of a
value:ex:
BOUND(1, 5, 10) => 5
BOUND(10, 5, 100) => 5
BOUND(1, 50, 10) => 10First of all, there are no macros in Ruby. If anything you would be
looking for a method (or function). How is your “bound” defined?Cheers
robert
2008/10/24 Me Me [email protected]:
I though it was something already implemented inside ruby, I guess the
same for MIN, MAX
If you want to use #min and #max then you can
def bound(min, val, max) [[val, max].min, min].max end
Regards,
Pit
Me Me wrote:
I though it was something already implemented inside ruby
If it existed, I would expect to find it as Range#clip or something like
that. But I don’t think it does.
class Range
def clip(v)
v < first ? first : v > last ? last : v
end
end
p (1…10).clip(5) # 5
p (10…100).clip(5) # 10 (different to your original post??)
p (1…10).clip(50) # 10
It wouldn’t surprise me if something like this existed in the facets
library though.
I guess the same for MIN, MAX
irb(main):001:0> [20,40].min
=> 20
irb(main):002:0> [20,40,30].min
=> 20
irb(main):003:0> [20,40,30].max
=> 40
On Sat, Oct 25, 2008 at 12:20 AM, Pit C. [email protected]
wrote:
2008/10/24 Me Me [email protected]:
I though it was something already implemented inside ruby, I guess the
same for MIN, MAX
Another way is to use sorting:
[min, val, max].sort[1]
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs