如何使用ruby以更好的方式返回指定范围内的值

时间:2014-08-29 09:36:22

标签: ruby

我向Numeric类添加了一个方法,如下所示:

class Numeric
  def limitate(min, max)
    return self if self.between?(min,max)
    return max if self > max
    min
  end
end

如果值在指定范围内,我想得到一个值,如果它在范围之外,它应该返回最大值或最小值。

我可以更简单地书写吗?怎么样?

2 个答案:

答案 0 :(得分:2)

遗憾的是no clamp in Ruby但我认为。另一种写作方式是:

v = [[v, min].max, max].min

答案 1 :(得分:0)

也许确保min低于最大值 否则,如果用户忘记哪一个应该先行minmax,则您的方法会出现语义错误。

min, max = max, min if min > max