范围是一个表示从开始到结束的值序列的对象。默认情况下,范围可以是包含(..
)或排除(...
)其结束值的。
这是一个简单的范围示例。阅读本教程的其余部分以了解更多信息。
示例
# Create a range from 0 to 3 (inclusive)
numbers = 0..3
# Iterating through the range
numbers.each do |i|
print "#{i}, "
end
# Output: 0, 1, 2, 3,
在这里,包含范围 0..3
包含从 0 到 3 的数字,包括结束值 3。
范围语法
# Includes the end value
start_value..end_value
# Excludes the end value
start_value...end_value
您可以使用整数、字母或任何可比较和递增的对象来定义范围。
范围的返回值
在 Ruby 中,..
和 ...
运算符用于创建 Range
对象。换句话说,范围返回 Range
类型的对象。例如,
numbers = 0..3
puts numbers.class
# Output: Range
要访问内部的值,您可以使用 .to_a
方法将此范围转换为数组。
示例 1:包含范围
# Create a range from 0 to 3 (3 is included)
numbers = 0..3
# Convert to array and print it
p numbers.to_a
# Output: [0, 1, 2, 3]
在此示例中,范围 0..3
使用 .to_a
转换为数组,该数组返回所有值,包括结束值。
示例 2:排除范围
# Create an exclusive range that starts at 0 and ends before 4
numbers = 0...4
p numbers.to_a
# Output: [0, 1, 2, 3]
在这里,0...4
创建了一个排除 4 的范围,因此结果数组从 0 到 3。
示例 3:字符范围
# Lowercase letters
letters = 'a'..'d'
p letters.to_a
# Uppercase letters
caps = 'A'...'E'
p caps.to_a
输出
["a", "b", "c", "d"] ["A", "B", "C", "D"]
在此示例中,'a'..'d'
包含 'd'
,而 'A'...'E'
排除 'E'
。
循环中的范围
范围通常用于循环中,以特定次数重复某个操作。
这是一个使用 for 循环的示例
# Iterate the loop five times
for i in 0...5
puts "#{i} Hello"
end
输出
0 Hello 1 Hello 2 Hello 3 Hello 4 Hello
在这里,范围 0...5
运行循环,从 0 到 5(不包括 5)。
条件中的范围
范围也可用于检查某个值是否在特定范围内。例如,
age = 25
if (18..30).include?(age)
puts "You are a young adult."
end
输出
You are a young adult.
在此示例中,条件评估为 true
,因为 25 位于范围 18..30
内。
Case 语句中的范围
范围通常在 case 语句中使用,以简化多个比较。例如,
score = 78
case score
when 90..100
puts "Grade A"
when 80...90
puts "Grade B"
when 70...80
puts "Grade C"
else
puts "Grade D or lower"
end
输出
Grade C
在这里,78 匹配范围 70...80
,因此它打印 Grade C
。
无开始/无结束范围
Ruby 还支持没有开始或结束的范围。例如,
无开始范围
# Includes all values less than or equal to 10
range = (..10)
puts range.include?(5) # true
puts range.include?(15) # false
在这里,(..10)
匹配任何小于或等于 10(≤ 10
)的值。
无结束范围
# Includes all values greater than or equal to 5
range = (5..)
puts range.include?(100) # true
puts range.include?(1) # false
在这里,(5..)
匹配任何大于或等于 5(≥ 5
)的值。
常见的 Ruby 范围方法
下面是一些常见的 Range
方法
方法 | 描述 |
---|---|
.to_a |
将范围转换为数组。 |
.include?(value) |
检查给定的 value 是否存在于范围内。 |
.first |
返回范围中的第一个值。 |
.last |
返回范围中的最后一个值。 |
.size |
返回范围中的元素数量(仅适用于数字范围)。 |
.step(n) |
以 n 的步长遍历范围;可与代码块或 .to_a 一起使用。 |
示例 4:范围方法
让我们看一下我们之前未使用过的一些 Range
方法
numbers = 1..10
# Get the first range element
puts "First Element: #{numbers.first}"
# Get the last range element
puts "Last Element: #{numbers.last}"
# Get the size of the range
puts "Range Size: #{numbers.size}"
puts "\nStepping by 2"
# From 1 to 10, step by 2
numbers.step(2) do |i|
puts i
end
输出
First Element: 1 Last Element: 10 Range Size: 10 Stepping by 2 1 3 5 7 9