Ruby Range类方法
Ruby提供了一个Range类。Ruby范围描述了一组有起点和终点的值。一个范围的值可以是数字、字符、字符串或对象。它是用 start_point…end_point 、 start_point…endpoint 字面意思或用 : : new 构建的 。 它为代码提供了灵活性并减少了代码的大小。你也可以通过使用 Range.new 创建一个范围 。 一个包含.. . (两个点)的范围意味着从开始值到结束值都包括在内,如果一个范围包含 ...(三个点)意味着它不包括结束值。
示例:
注意: 在Ruby中,Ranges可以使用对象来创建,只要这些对象可以使用其<=>操作符进行比较。为了返回顺序中的下一个对象,它提供了对 succ方法的支持。
类方法
new : 这个方法用于从给定的开始和结束值创建一个范围。在这个方法中,如果第三个参数是假的或不包括的,那么这个范围就包括末端对象。否则,它将省略。
例子
输出
实例方法
- == : 如果obj的起点、终点和第三个参数的值与rng相同,该方法返回true。否则,它将返回false。这个方法的返回类型是布尔值。
- 例子
- 输出
- === : 在这个方法中,如果rng省略了它的末端,那么返回rng.start <= value < rng.end,如果rng是包容的,那么它返回 rng.start <= value<= rng.end。 方便的是,===是比较运算符,case语句使用它。
- 例子
- 输出
- begin : 此方法返回rng的第一个对象。
- 例子
- 输出
- each :该方法用于遍历rng中的元素,依次将每个元素传递给块。
- 例子
- 输出
- end : 该方法返回rng的结束对象。
- 例子
- 输出
- eql? : 这个方法检查obj和rng在开始、结束和独占标志方面是否相等。如果obj包含与rng 相同的start、end和exclusive标志值,那么它返回true,否则返回false。
- 例子
- 输出
- exclude_end? : 如果rng的结尾被省略,该方法返回true,否则返回false。
- 例子
- 输出
- first : 该方法返回rng的起始对象。
- 例子
- 输出
- last : 该方法返回rng的最后一个对象。
- 例子
- 输出
- member? : 这个方法检查给定值是否是rng的成员。如果给定的值是rng的成员,那么它返回true,否则返回false。
- 例子
- 输出
- include? : 如果obj是rng的一个元素,该方法返回true,否则返回false。
- 例如:
- 输出
- step :该方法通过将每一个n个 对象传递给区块,对rng 进行迭代。如果范围内有数字,则对一个数字的加法产生连续的元素。否则, 步骤调用succ方法来迭代范围内的元素。
参考资料: https://ruby-doc.org/core-1.9.3/Range.html