📜  Ruby-数组

📅  最后修改于: 2020-10-16 05:52:51             🧑  作者: Mango


Ruby数组是任何对象的有序,整数索引集合。数组中的每个元素都与索引关联并由索引引用。

数组索引从0开始,如C或Java。假定相对于数组末尾为负索引—索引-1表示数组的最后一个元素,-2是数组中最后一个元素的下一个,依此类推。

Ruby数组可以包含String,Integer,Fixnum,Hash,Symbol等对象,甚至可以包含其他Array对象。 Ruby数组不像其他语言中的数组那样严格。 Ruby数组在向其中添加元素时会自动增长。

创建数组

有很多创建或初始化数组的方法。一种方法是使用新的类方法-

names = Array.new

您可以在创建数组时设置数组的大小-

names = Array.new(20)

现在,数组名称的大小或长度为20个元素。您可以使用size或length方法返回数组的大小-

#!/usr/bin/ruby

names = Array.new(20)
puts names.size  # This returns 20
puts names.length # This also returns 20

这将产生以下结果-

20
20

您可以为数组中的每个元素分配一个值,如下所示:

#!/usr/bin/ruby

names = Array.new(4, "mac")
puts "#{names}"

这将产生以下结果-

["mac", "mac", "mac", "mac"]

您还可以将块与new一起使用,并使用该块求和的结果填充每个元素-

#!/usr/bin/ruby

nums = Array.new(10) { |e| e = e * 2 }
puts "#{nums}"

这将产生以下结果-

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

数组还有另一种方法[]。它是这样的-

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

数组创建的另一种形式如下-

nums = Array[1, 2, 3, 4,5]

Ruby核心中提供的Kernel模块具有Array方法,该方法仅接受单个参数。在这里,该方法将范围作为参数来创建数字数组-

#!/usr/bin/ruby

digits = Array(0..9)
puts "#{digits}"

这将产生以下结果-

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

数组内置方法

我们需要一个Array对象的实例来调用Array方法。如我们所见,以下是创建Array对象实例的方法-

Array.[](...) [or] Array[...] [or] [...]

这将返回一个填充有给定对象的新数组。现在,使用创建的对象,我们可以调用任何可用的实例方法。例如-

#!/usr/bin/ruby

digits = Array(0..9)
num = digits.at(6)
puts "#{num}"

这将产生以下结果-

6

阵列包装指令

请尝试以下示例打包各种数据。

a = [ "a", "b", "c" ]
n = [ 65, 66, 67 ]
puts a.pack("A3A3A3")   #=> "a  b  c  "
puts a.pack("a3a3a3")   #=> "a\000\000b\000\000c\000\000"
puts n.pack("ccc")      #=> "ABC"

这将产生以下结果-

a  b  c
abc
ABC