使用索引切片数组
本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 70 课,共 88 课。
Ruby 还提供了另一种切分数组的方法,你可以指定起始索引和长度。你不必指定范围,只需提供两个数字:从哪里开始,以及提取多少个元素。
这种语法使用逗号将起始索引与数量分隔开:
numbers = [10, 20, 30, 40, 50]
slice = numbers[1, 3]
puts slice # 输出:20, 30, 40这会从索引 1 开始提取 3 个元素。第一个数字是起始位置,第二个数字是你想要的元素数量。
当你确切知道需要多少个元素时,这种方法特别有用:
letters = ["a", "b", "c", "d", "e"]
first_two = letters[0, 2]
puts first_two # 输出:a, b负索引在这里也适用。你可以从数组末尾开始:
colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]
puts last_two # 输出:blue, yellow如果你请求的元素数量超过可用元素的数量,Ruby 会直接返回现有的元素,不会引发错误:
nums = [1, 2, 3]
slice = nums[1, 10]
puts slice # 输出:2, 3如果你知道所需元素的数量,就选择这种方法;如果你知道确切的位置,就使用范围。
挑战
简单读取 3 个输入:
- 一行以逗号分隔的整数(例如,
5,10,15,20,25,30,35,40) - 起始索引(整数)
- 要提取的元素数量(整数)
将第一个输入拆分为整数数组。使用起始索引和数量,通过索引和长度语法对数组进行切片,然后将切片部分中的每个元素单独打印在一行。
例如,如果输入是 5,10,15,20,25,30,35,40、2 和 4,输出应为:
15
20
25
30如果输入是 100,200,300,400,500、0 和 2,输出应为:
100
200如果输入是 a,b,c,d,e,f,g、-3 和 2,输出应为:
e
f如果输入是 10,20,30、1 和 10,输出应为:
20
30亲手试试
# 读取输入
input_line = gets.chomp
start_index = gets.chomp.to_i
count = gets.chomp.to_i
# 将输入拆分为数组
arr = input_line.split(',')
# TODO:在下方编写代码,使用索引和长度语法对数组进行切片
# 并将每个元素分别打印在单独一行这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Ruby 在线编译器