1

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

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

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

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

谢谢!

4

2 回答 2

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
于 2013-07-20T20:39:17.340 回答
0
class Range
  def cover_e? other
    cover?(other.min) and cover?(other.max)
  end
end
于 2013-07-21T01:09:22.807 回答