为什么这个等式返回假
(0..9) === (0..9)
=> false
虽然这个等式返回真......
5 === 5
=> true
而这个等式也是真的吗?
(0..9) == (0..9)
=> true
我对范围缺少什么?
Range#===文档说:
如果 obj 是范围的元素,则返回 true,否则返回 false。方便的是,=== 是 case 语句使用的比较运算符。
范围 (0..9) 不是范围 (0..9) 的元素,这就是为什么(0..9) === (0..9)
为假。
Range#==文档说:
仅当 obj 是 Range、具有等效的开始项和结束项(通过将它们与 == 进行比较)并且具有相同的 exclude_end 时才返回 true?设置为范围。
范围 (0..9) 和 (0..9) 的开始项和结束项是相同的,这就是为什么(0..9) == (0..9)
为真。
该类Range
重新定义===
运算符以检查右侧的参数是否在每个http://www.ruby-doc.org/core-1.9.3/Range.html#method-i-3D-3D-3D的范围内,这就是为什么你看到你所看到的。