Ruby 数组(Array)
Ruby 中的数组(Array
)是一种非常常见的数据结构,用于存储多个元素。与其他编程语言的数组相比,Ruby 的数组具有许多灵活的特性,比如可以存储不同类型的数据、动态调整大小等。
一、创建数组
- 使用
[]
创建数组arr = [1, 2, 3, 4, 5] puts arr
这行代码创建了一个包含 5 个整数的数组。 - 使用
Array.new
创建数组arr = Array.new(3) # 创建一个包含 3 个 `nil` 的数组 puts arr.inspect
你可以通过Array.new
来创建一个指定大小的空数组,数组的每个元素默认是nil
。使用自定义值初始化数组:arr = Array.new(3, "hello") puts arr.inspect # ["hello", "hello", "hello"]
这行代码创建了一个包含 3 个"hello"
字符串的数组。
二、访问数组元素
- 通过索引访问元素数组的索引从 0 开始,可以使用数组索引来访问特定的元素。
arr = [10, 20, 30, 40, 50] puts arr[0] # 10 puts arr[2] # 30
- 负索引:使用负数索引从数组的末尾访问元素。
arr[-1]
是数组的最后一个元素,arr[-2]
是倒数第二个元素,依此类推。arr = [10, 20, 30, 40, 50] puts arr[-1] # 50 puts arr[-2] # 40
- 通过范围访问元素可以使用范围操作符
..
或...
获取数组的一个子数组。arr = [10, 20, 30, 40, 50] puts arr[1..3].inspect # [20, 30, 40] (包括 3) puts arr[1...3].inspect # [20, 30] (不包括 3)
三、常见的数组方法
- 添加元素
push
方法向数组的末尾添加元素:arr = [1, 2, 3] arr.push(4) # [1, 2, 3, 4]
<<
操作符也可以用来添加元素:arr = [1, 2, 3] arr << 4 # [1, 2, 3, 4]
- 删除元素
pop
方法删除并返回数组的最后一个元素:arr = [1, 2, 3, 4] puts arr.pop # 4 puts arr.inspect # [1, 2, 3]
shift
方法删除并返回数组的第一个元素:arr = [1, 2, 3, 4] puts arr.shift # 1 puts arr.inspect # [2, 3, 4]
delete
方法删除指定值的元素:arr = [1, 2, 3, 4] arr.delete(3) # 删除值为 3 的元素 puts arr.inspect # [1, 2, 4]
- 查找元素
include?
方法判断数组是否包含某个元素:arr = [1, 2, 3, 4] puts arr.include?(3) # true puts arr.include?(5) # false
index
方法返回指定元素的第一个索引位置:arr = [10, 20, 30, 40] puts arr.index(30) # 2
- 排序
sort
方法对数组进行升序排序:arr = [5, 3, 8, 1] puts arr.sort.inspect # [1, 3, 5, 8]
- 如果数组中的元素是字符串,也可以排序:
arr = ['banana', 'apple', 'cherry'] puts arr.sort.inspect # ["apple", "banana", "cherry"]
reverse
方法返回数组的倒序:arr = [1, 2, 3, 4] puts arr.reverse.inspect # [4, 3, 2, 1]
- 映射与迭代
map
方法对数组的每个元素执行一个块,并返回一个新的数组:arr = [1, 2, 3] squared = arr.map { |x| x ** 2 } puts squared.inspect # [1, 4, 9]
each
方法遍历数组的每个元素:arr = [1, 2, 3] arr.each { |x| puts x * 2 }
- 联合与拆分
concat
方法将一个数组连接到另一个数组:arr1 = [1, 2] arr2 = [3, 4] arr1.concat(arr2) puts arr1.inspect # [1, 2, 3, 4]
flatten
方法将多维数组展平为一维数组:arr = [1, [2, 3], [4, 5]] puts arr.flatten.inspect # [1, 2, 3, 4, 5]
四、二维数组
Ruby 的数组也可以是多维的,即数组中的元素可以是另一个数组。通过这种方式,可以创建二维或更高维度的数组。
示例:二维数组
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
puts arr[0].inspect # [1, 2, 3]
puts arr[1][2] # 6
五、数组与哈希的结合
在 Ruby 中,数组和哈希常常一起使用,哈希中的值可以是数组,反之亦然。使用这两者的结合可以帮助你构建更复杂的数据结构。
示例:哈希中的数组
hash = { 'fruits' => ['apple', 'banana', 'cherry'], 'vegetables' => ['carrot', 'broccoli'] }
puts hash['fruits'].inspect # ["apple", "banana", "cherry"]
六、总结
Ruby 数组是非常灵活和强大的数据结构,它支持多种数据类型、动态调整大小,并提供了大量的方法来进行元素的访问、修改、排序等操作。无论是在进行简单的列表管理,还是处理更复杂的数据结构时,Ruby 数组都是不可或缺的工具。
发表回复