當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby Range.cover?用法及代碼示例


本文簡要介紹ruby語言中 Range.cover? 的用法。

用法

cover?(object) → true or false
cover?(range) → true or false

如果給定的參數在 self 內,則返回 true ,否則返回 false

使用非範圍參數 object ,使用 <=< 進行評估。

對於包含結束值 (#exclude_end? == false) 的範圍 self,計算如下:

self.begin <= object <= self.end

例子:

r = (1..4)
r.cover?(1)     # => true
r.cover?(4)     # => true
r.cover?(0)     # => false
r.cover?(5)     # => false
r.cover?('foo') # => false

r = ('a'..'d')
r.cover?('a')     # => true
r.cover?('d')     # => true
r.cover?(' ')     # => false
r.cover?('e')     # => false
r.cover?(0)       # => false

對於排除結束值 (#exclude_end? == true) 的範圍 r,計算如下:

r.begin <= object < r.end

例子:

r = (1...4)
r.cover?(1)     # => true
r.cover?(3)     # => true
r.cover?(0)     # => false
r.cover?(4)     # => false
r.cover?('foo') # => false

r = ('a'...'d')
r.cover?('a')     # => true
r.cover?('c')     # => true
r.cover?(' ')     # => false
r.cover?('d')     # => false
r.cover?(0)       # => false

使用範圍參數 range ,比較 selfrange 的第一個和最後一個元素:

r = (1..4)
r.cover?(1..4)     # => true
r.cover?(0..4)     # => false
r.cover?(1..5)     # => false
r.cover?('a'..'d') # => false

r = (1...4)
r.cover?(1..3)     # => true
r.cover?(1..4)     # => false

如果開始和結束是數字, cover? 的行為類似於 include?

(1..3).cover?(1.5) # => true
(1..3).include?(1.5) # => true

但是當不是數字時,這兩種方法可能會有所不同:

('a'..'d').cover?('cc')   # => true
('a'..'d').include?('cc') # => false

如果出現以下任一情況,則返回 false

  • self 的開始值大於其結束值。

  • <=> 的內部調用返回 nil ;也就是說,操作數不可比較。

相關: Range#include?

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Range.cover?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。