疑惑的代码:
tripless = "AAA".."ZZZ" tripless.include? “ABCD” // true in 1.8, false in 1.9 tripless.cover? "ABCD" // ture and fast in 1.9
补充说明:书上介绍 cover? 总是使用连续的成员关系测试,而 include? 和 member 会根据 Range 类型选择使用连续还是离散的成员关系测试。另外,在 Range 里面使用连续的成员关系测试,通过实现 <=> 操作符。
为什么 ABCD 用连续的成员关系测试,"ABCD" 会是“AAA” ... “ZZZ”范围中的端点。比较操作符在对字符串进行 <=> 操作,是什么样的方式呢?使用字节码点数值还是什么呢?