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)
你可以通过使用begin
和end
方法来获取范围的起始点和结束点。你还可以使用first
和last
方法来获取范围的第一个和最后一个元素。另外,你还可以使用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?
方法检查范围是否包含指定的值。你还可以使用begin
和end
方法、first
和last
方法以及size
方法来获取范围的相关信息。另外,你还可以使用truncate
方法来限制范围中的元素数量。