Ruby 手册 | 21 - 数组 Array

414 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

一、数组

Ruby 中数组是一种非常重要的数据类型,与字符串、区间类型之间有着密切的练习,Ruby 中数组的索引从 0 开始,Ruby 是动态语言,数组无须声明,也无须保证数组中元素类型一致或者固定的长度,Ruby 的数组的长度是可以是随时改变的,且元素内容可以是各种不同的类型。

Ruby 数组中的元素只会保留对象的引用,而不是对象的复制,也就是说数组是引用数据类型。

数组的定义

Ruby 中一切皆对象,数组是 Array 类的实例,因此可以通过 Array 类创建一个数组实例

arr = Array.new

当然在创建数组的时候也可以传入指定的数组元素

arr = Array.new("a", 1, 2, 3)

数组是通过 [] 包含的一组元素,因此可以直接创建一个数组

a = []
b = ["a", 1, 2, 3]

数组中的多个元素使用逗号分割。

还有一种方法创建数组就是使用 %w 专门创建字符串数组的方式

arr = %w(a b c d e)

puts arr.to_s # ["a", "b", "c", "d", "e"]

%w 创建方式可以不用给字符串添加双引号,但是由于元素间隔使用空格来表示,因此不好处理带有空格的字符串。

数组并行赋值

Ruby 中数组的并行赋值能力可以大大简化赋值语句,并行赋值既把赋值等号右边的元素一次赋值给左边的元素

a, b, c, d = [1, 2, "c", "d"]

puts a,b,c,d

执行上述代码,输出结果如下:

1
2
c
d

有点类似 Python 中的解构赋值。

Ruby 中没有多维数组的概念,但是多维数组可以视为一维数组的不断嵌套,可以通过一维数组创建多维数组。

二、数组的运算

Ruby 中的数组可以通过运算符进行追加、获取交集并集差集等运算

  • []:根据索引访问数组元素
  • <<:追加运算符,可以往数组中追缴元素
  • +:合并两个数组
  • -:求数组差集,删除两个数组的相同元素
  • &:求数组交集,获取数组中的相同元素的集合
  • |:求数组并集,将两个数组合并,相同元素只会出现一次
  • *:重复数组,如果 * 之后是整数,则返回重复整数次的数组,如果是字符串,将将该字符串相连并返回一个字符串
puts (["a","b", 1, 2, 3] << 1).to_s
puts (["a","b", 1, 2, 3] + [3, 4, 5]).to_s
puts (["a","b", 1, 2, 3] - [2, 3, 4]).to_s
puts (["a","b", 1, 2, 3] & [1, 2, 3]).to_s
puts (["a","b", 1, 2, 3] | [2, 3, 4]).to_s
puts (["a","b", 1, 2, 3] * 2).to_s
puts (["a","b", 1, 2, 3] * "cde").to_s

执行上述代码,输出结果如下:

["a", "b", 1, 2, 3, 1]
["a", "b", 1, 2, 3, 3, 4, 5]
["a", "b", 1]
[1, 2, 3]
["a", "b", 1, 2, 3, 4]
["a", "b", 1, 2, 3, "a", "b", 1, 2, 3]
acdebcde1cde2cde3