我试图了解如何range.cover?
工作和遵循似乎令人困惑 -
("as".."at").cover?("ass") # true
和("as".."at").cover?("ate") # false
这个孤立的例子并不令人困惑,因为它似乎是
ass
在.at
ate
("1".."z").cover?(":") # true
这个事实似乎是基于 ASCII 值而不是字典样式,因为在字典中我希望所有特殊字符都在偶数之前,而混乱从这里开始。如果我认为是真的,那么如何
cover?
决定采用哪种比较方法,即使用 ASCII 值或基于字典的方法。以及范围如何与数组一起使用。例如 -
([1]..[10]).cover?([9,11,335]) # true
这个例子我预计是错误的。但从表面上看,在处理数组时,边界值和
cover?
' 参数都被转换为字符串,并且简单的字典样式比较会产生 true。这是正确的解释吗?可以处理什么样的物体
Range
?我知道它可以numbers
(除了复杂的),handlestrings
,能够神秘地使用,arrays
而boolean, nil and hash
其他值会导致它提高ArgumentError: bad value for range