当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。