1

カスタムメソッド「cover_e」の実装方法 これは、obj が範囲の開始と終了の間にある場合に true を返す標準の Range#cover?(val) とほとんど同じように実装されています。

 ("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 に答える