携手创作,共同成长!这是我参与「掘金日新计划 · 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