使用范围切片数组
本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 69 课,共 88 课。
有时,你需要提取数组的一部分,而不是逐个访问元素。Ruby 允许你使用范围切片数组,从而创建一个只包含你指定元素的新数组。
要使用范围切片数组,请将范围放在方括号内:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
puts slice # 输出:20, 30, 40范围 1..3 包含索引为 1、2 和 3 的元素。请记住,数组索引从 0 开始,所以索引 1 是第二个元素。
你也可以使用三点范围(...)来排除最后一个索引:
letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
puts slice # 输出:a, b, c这里,0...3 包含索引 0、1 和 2,但不包括索引 3。
负索引也适用于范围。它们从数组末尾开始计数,其中 -1 表示最后一个元素:
colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
puts slice # 输出:green, blue, yellow这会提取从索引 1 到最后一个元素的所有内容。当你想跳过第一个元素,但不知道数组的长度时,这很有用。
挑战
简单读取两个输入:
- 一行由逗号分隔的整数(例如,
10,20,30,40,50,60,70) - 格式为
start..end或start...end的范围说明(例如,2..5或1...4)
将第一个输入拆分为整数数组。然后使用第二个输入中的范围切片数组,并将切片部分中的每个元素单独打印在一行上。
范围输入会使用两个点(..)来包含结束索引,或使用三个点(...)来排除结束索引。
例如,如果输入是 10,20,30,40,50,60,70 和 2..5,输出应为:
30
40
50
60如果输入是 5,10,15,20,25,30 和 0...3,输出应为:
5
10
15如果输入是 100,200,300,400,500 和 1..-1,输出应为:
200
300
400
500如果输入是 a,b,c,d,e,f 和 -3..-1,输出应为:
d
e
f亲手试试
# 读取以逗号分隔的值
input_values = gets.chomp
# 读取范围说明
range_spec = gets.chomp
# TODO: 在下方编写代码
# 1. 将 input_values 拆分为数组
# 2. 解析 range_spec,确定起始位置、结束位置,以及使用 .. 还是 ...
# 3. 使用合适的范围截取数组
# 4. 将截取部分的每个元素分别打印在单独的一行这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Ruby 在线编译器