举例说明如何在Ruby中添加到数组中

449 阅读4分钟

当涉及到在程序中存储相关和非复杂的信息时,数组总是会出现。阵列是一个有序的项目列表的集合。使用数组,你可以在一个变量中存储相关的值,使你的代码高效且易于管理。在Ruby中,数组包含很多内置的方法,使处理列表数据变得更加轻松。

本文介绍了在Ruby中向数组添加项目的各种方法。

如何在Ruby中创建一个数组

在Ruby中,有几种方法可以创建一个数组。最常见和最基本的方法是在一对方括号中添加数组元素,并以逗号分隔。

[1,2,3,4,5]

以上是一个包含五个元素的数组。

像其他有效的对象一样,你可以把数组分配给一个变量名,如:

myarry = [1,2,3,4,5]

要使用方括号方法创建一个空数组,你可以这样做

empty = []

上述语法将初始化一个空数组,你可以使用我们将在本教程的下一节讨论的方法来追加数值。

另一种在Ruby中创建数组的方法是使用new类方法。

myarray = Array.new

上面的格式将创建一个空数组。这种格式类似于使用一对空的方括号来初始化一个空数组。

为了在创建过程中指定数组的大小,你在一对小括号内传递大小。

myarray = Array.new(10)

在上面的例子中,Ruby创建了一个大小为10个元素的数组,这意味着元素的索引将从0到9开始。

最后一种创建数组的方法结合了方括号和new类方法。

这方面的语法如下

myarray = Array.[]()

上面的语法将创建一个新的空数组。如果你想在数组创建过程中赋值,你可以这样做。

myarray = Array.[](1,2,3,4,5)

Ruby会把括号内传递的元素加入到新数组中。

如何在Ruby中向数组中添加元素

如果你有一个现有的数组,你可以使用各种技术向集合中添加元素。

方法1:使用下一个索引

第一种方法是给下一个索引赋值。举个例子,你有一个数组,如下面所示。

frameworks = [
   "React",
   "Angular",
   "Vue JS",
   "Svelte"
]

在上面的例子中,我们在数组中有四个元素。由于数组的索引,元素从0开始,最大索引值是3。

为了使用其索引将一个元素添加到数组中,我们可以为后面的索引赋值,如。

frameworks[4] = "Mithril Js"

使用上述技术向数组中添加项目有两个缺点。

其一:如果你有一个大的数组,要回忆起后续的索引可能是一个挑战。因此,如果你跳过一个索引,Ruby将插入空值直到匹配的索引。

比如说

frameworks[10] = "Stencil Js"
print frameworks
["React", "Angular", "Vue JS", "Svelte", "Mithril Js", nil, nil, nil, nil, nil, "Stencil Js"]

在上面的例子中,Ruby添加了从索引5到9的nil值来匹配指定的索引10。

:如果你指定了错误的索引,你将覆盖指定索引处的值。

比如说

frameworks = [
   "React",
   "Angular",
   "Vue JS",
   "Svelte"
]
frameworks[1] = "Ooops!"
print frameworks

在上面的例子中,我们指定了错误的索引,导致了对存储值的覆盖。

这里有一个输出来显示这一点。

["React", "Ooops!", "Vue JS", "Svelte"]

方法2:使用推送方法

我们可以使用内置的push方法来避免使用前面的技术可能产生的错误。

该方法将获取括号中的指定值并将其添加到数组中的最后一项。

frameworks = [
   "React",
   "Angular",
   "Vue JS",
   "Svelte"
]
frameworks.push("Mithril Js")

使用push方法,你不需要回忆当前的索引;Ruby会自动处理这个问题。

在某些情况下,你会发现使用<<语法而不是push方法。其功能与推送方法相同,因为。

frameworks << "Mithril Js"

方法3:使用Unshift方法

index和push方法都是将元素追加到数组的末端。要在集合的开始添加一个元素,使用unshift方法。

unshift方法的工作原理与push方法类似。然而,它在索引0处添加元素。

frameworks = [
   "React",
   "Angular",
   "Vue JS",
   "Svelte"
]
frameworks.unshift("Mithril Js")
print frameworks

这个例子的结果数组将是

["Mithril Js", "React", "Angular", "Vue JS", "Svelte"]

方法4:使用插入方法

Ruby中的#insert方法接受一个索引位置和一个值作为参数。你可以用它来在任何索引位置插入一个元素。

考虑一下下面的语法

frameworks = [
   "React",
   "Angular",
   "Vue JS",
   "Svelte"
]
frameworks.insert(2, "Stencil Js")
print frameworks

这个例子的结果数组是

["React", "Angular", "Stencil Js", "Vue JS", "Svelte"]

在上面的例子中,插入方法将把元素 "挤压 "到指定的数组中。

注意:谨慎使用这个方法,特别是当你有其他代码块引用设定的索引时。

总结

本教程已经向你展示了如何处理数组,包括使用各种方法来创建和添加数组中的项目。

专业提示:Ruby对push和unshift方法有别名,分别是append和pepend。