如何实现自定义方法“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
谢谢!
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
class Range
def cover_e? other
cover?(other.min) and cover?(other.max)
end
end