(Ruby)如何检查某个区域是否包含另一个范围的子集?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

如果我有两个重叠的范围:

x = 1..10
y = 5..15

当我说:

puts x.include? y 

输出是:

false 

因为这两个范围仅部分重叠。

但是如果我希望它在两个范围之间有部分重叠时是“真实的”,我会如何写?换句话说,我需要一种方法来知道一个范围何时包含另一个范围的子集。我认为在Ruby中有这样一个优雅的写法,但我能想到的唯一解决方案是冗长的。

提问于
用户回答回答于

小心使用这个大范围,但这是一个很好的方法来做到这一点:

(x.to_a & y.to_a).empty?
用户回答回答于

有效的方法是比较这些限制。

(x.first <= y.last) and (y.first <= x.last)

扫码关注云+社区