实现自定义“覆盖?”的方法

时间:2013-07-20 20:34:53

标签: ruby range

如何实现自定义方法“cover_e?”实现几乎像标准     范围#封面?(VAL) 如果obj在范围的开始和结束之间,则返回true。

 ("a".."z").cover?("c")    #=> true

自定义方法应该使用“嵌套”/“继承”范围,例如:((2..5))

(1..10).cover_e?((2..5))   # true 
(5..15).cover_e?((10..20)) # false 

谢谢!

2 个答案:

答案 0 :(得分:1)

class Range
  def cover_e? rng
    rng.minmax.all?{|i| self.include? i}
  end
end
p (1..10).cover_e?((2..5))
p (5..15).cover_e?((10..20))
# >> true
# >> false

或者

class Range
  def cover_e? rng
    (rng.to_a | self.to_a).size == self.size
  end
end
p (1..10).cover_e?((2..5))
p (5..15).cover_e?((10..20))
# >> true
# >> false

答案 1 :(得分:0)

class Range
  def cover_e? other
    cover?(other.min) and cover?(other.max)
  end
end