是否有更多的rubylike方法来做output_val = [input_val,max] .min?

时间:2014-07-25 00:13:20

标签: ruby max min

偶尔我需要做这样的事情:

output_val = ( input_val < max ) ? input_val : max

如果我对太空感到吝啬,我可能会选择:

output_val = [ input_val, max ].min

第三种选择是否简洁而不牺牲表现力?

1 个答案:

答案 0 :(得分:2)

猴子补丁!没有比这更多的Rubylike。

class Numeric
  def unless_over(max)
    [self, max].min
  end
end

示例:

133.unless_over(100) #=> 100
133.unless_over(150) #=> 133

注意:我实际上不会这个(我会用你的第二个例子),但我猜这是问题的精神。