Amy*_*Amy 11 ruby ruby-on-rails
是否有一个内置的方式,限制了一些更优雅的方式NUM在Ruby或者Rails中到上/下限?
例如:
def number_bounded (num, lower_bound, upper_bound)
return lower_bound if num < lower_bound
return upper_bound if num > upper_bound
num
end
Run Code Online (Sandbox Code Playgroud)
mck*_*eed 13
这是一个聪明的方法:
[lower_bound, num, upper_bound].sort[1]
Run Code Online (Sandbox Code Playgroud)
但那不是很可读.如果你只需要做一次,我就会这么做
num < lower_bound ? lower_bound : (num > upper_bound ? upper_bound : num)
Run Code Online (Sandbox Code Playgroud)
或者如果您需要多次,可以对可比模块进行修补:
module Comparable
def bound(range)
return range.first if self < range.first
return range.last if self > range.last
self
end
end
Run Code Online (Sandbox Code Playgroud)
所以你可以像使用它一样
num.bound(lower_bound..upper_bound)
Run Code Online (Sandbox Code Playgroud)
你也可以只需要ruby facets,它会添加一个方法clip来实现这一点.
Mar*_*ers 12
您可以使用min和max来使代码更简洁:
number_bounded = [lower_bound, [upper_bound, num].min].max
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2287 次 |
| 最近记录: |