如果我有两个重叠的范围:
x = 1..10
y = 5..15
Run Code Online (Sandbox Code Playgroud)
当我说:
puts x.include? y
Run Code Online (Sandbox Code Playgroud)
输出是:
false
Run Code Online (Sandbox Code Playgroud)
因为这两个范围只是部分重叠.
但是如果我希望当两个范围之间存在部分重叠时它是"真实的",我该怎么写呢?换句话说,我需要一种方法来知道一个范围何时包含另一个范围的子集.我假设有一种优雅的方式在Ruby中编写它,但我能想到的唯一解决方案是冗长的.
Mar*_*usQ 61
有效的方法是比较限制
(x.first <= y.last) and (y.first <= x.last)
Run Code Online (Sandbox Code Playgroud)
小智 8
使用大范围时要小心,但这是一种优雅的方法:
(x.to_a & y.to_a).empty?
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Ruby 2.6,则可以Range#cover?与另一个Range.
(1..5).cover?(2..3) #=> true
(1..5).cover?(0..6) #=> false
(1..5).cover?(1...6) #=> true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7106 次 |
| 最近记录: |