Ruby 范围(Range)


Ruby 范围(Range)

在 Ruby 中,范围是一个描述两个确定的端点之间的一系列值的对象。范围可以用于表示数字、字符、时间等类型的范围。

在 Ruby 中,范围可被定义为两种类型: 包含端点的范围不包含端点的范围

包含端点的范围(Inclusive Range)

包含端点的范围是从起始点到结束点的范围,可以表示为一个双点范围。

1..5    # 包含1和5在内的范围

在这个例子中,1是起始点,5是结束点。范围中的每个值都包括起始点和结束点。定义包含端点的范围的操作符是两个点,即..。你还可以使用Range.new方法创建一个所有值都包含的范围。

range = Range.new(1, 5)   # 包含1和5在内的范围

在包含端点的范围中,你可以通过使用each方法来枚举范围内的所有值。

range.each { |num| puts num }   # 输出范围内的所有值

你可以通过使用cover?方法来检查范围是否包含指定的值。

range.cover?(3)   # true
range.cover?(10)  # false

不包含端点的范围(Exclusive Range)

不包含端点的范围是从起始点到结束点的范围,不包括结束点,可以表示为一个单点范围。

1...5    # 不包括5的范围

在这个例子中,1是起始点,5是结束点,但范围中的每个值都不包括结束点。定义不包含端点的范围的操作符是三个点,即...。你还可以使用Range.new方法创建一个不包含结束点的范围。

range = Range.new(1, 5, true)   # 不包括5的范围

在不包含端点的范围中,你可以通过使用each方法来枚举范围内的所有值。

range.each { |num| puts num }   # 输出范围内的所有值

你可以通过使用cover?方法来检查范围是否包含指定的值。

range.cover?(3)   # true
range.cover?(5)   # false,不包括结束点
range.cover?(10)  # false

限制范围(Limiting Range)

你可以通过使用beginend方法来获取范围的起始点和结束点。你还可以使用firstlast方法来获取范围的第一个和最后一个元素。另外,你还可以使用size方法来获取范围内元素的数量,如下例所示:

range = 0..10
puts range.begin  # 输出范围的起始点
puts range.end    # 输出范围的结束点
puts range.first  # 输出范围中的第一个元素
puts range.last   # 输出范围中的最后一个元素
puts range.size   # 输出范围中元素的数量

此外,你可以使用truncate方法来限制范围中的元素数量,如下例所示:

range = 0..10
new_range = range.truncate(5)    # 限制范围中的元素数量
puts new_range.to_a   # 输出新范围中的所有元素

在这个例子中,truncate方法将范围中所有元素的数量限制为5个。

总结

范围是一个强大的对象,它可以用于表示数字、字符、时间等类型的范围。Ruby提供了包含端点的范围和不包含端点的范围。你可以通过使用范围的each方法枚举范围内的所有值,并使用cover?方法检查范围是否包含指定的值。你还可以使用beginend方法、firstlast方法以及size方法来获取范围的相关信息。另外,你还可以使用truncate方法来限制范围中的元素数量。