本文详细探讨了 Ruby 语言中 Range 类从早期版本到 Ruby 3.3 的演变过程,重点关注 Range 类在不同版本中的设计变化、语义变化以及使用方法的演变。文章涵盖了 Range 类边界值的类型、包含关系的判断方法 (#include?、#cover? 和 #===)、无穷范围的引入、迭代方法 (#each、#step、#reverse_each) 的行为变化以及与其他 API 的交互等方面。作者通过分析 Range 类的演变历史,阐述了 Ruby 语言作为一个不断发展变化的编程语言,如何权衡设计决策、修复缺陷以及适应新的需求。