Ruby数组

Ruby数组是对象的有序集合。 它们可以保存像整数,数字,散列,字符串,符号或任何其他数组的对象。

其索引开始于0。负数索引是从数组末尾的-1位置开始。 例如,-1表示数组的最后一个元素,0表示数组的第一个元素。

创建Ruby数组

Ruby数组以许多方式创建。

  • 使用文字构造函数 []
  • 使用类的new方法

使用文字构造[]

使用文字构造函数[]构建Ruby数组。 单个数组可以包含不同类型的对象。

例如,以下数组包含一个整数,浮点数和一个字符串。

#!/usr/bin/ruby   

arr = [4, 4.0, "maxsu", ]   
puts arr

执行上面代码,得到以下输出结果 -

F:\worksp\ruby>ruby array-contruct.rb
4
4.0
maxsu

F:\worksp\ruby>

使用类的new方法

通过使用零个,一个或多个参数调用::new方法来构造一个Ruby数组。

语法:

arrayName = Array.new

设置数组的大小,如下语法 -

语法:

arrayName = Array.new(10)

在这里,要创建的数组大小是10个元素。

要知道数组的大小,使用 sizelength 方法。

示例:

#!/usr/bin/ruby   

exm = Array.new(10)   
puts exm.size    
puts exm.length

执行上面代码,输出结果如下 -

F:\worksp\ruby>ruby array-size.rb
10
10

F:\worksp\ruby>

示例2

#!/usr/bin/ruby   
exm = Array("a"..."z")   
puts "#{exm}"

执行上面代码得到以下结果 -

F:\worksp\ruby>ruby array-a2z.rb
["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y"]

F:\worksp\ruby>

访问数组元素

可以使用#[]方法访问Ruby数组中的元素。也可以传递一个或多个参数,甚至传递一系列参数。

#[] method

示例

#!/usr/bin/ruby   
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]   
puts days[0]      
puts days[10]   
puts days[-2]     
puts days[2, 3]   
puts days[1..7]

执行上面代码,得到输出结果如下 -

F:\worksp\ruby>ruby array-elements.rb
Mon

Sat
Wed
Thu
Fri
Tue
Wed
Thu
Fri
Sat
Sun

F:\worksp\ruby>

at方法

要访问特定的元素,也可以使用at方法。

示例:

#!/usr/bin/ruby   
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]   
puts days.at(0)   
puts days.at(-1)   
puts days.at(5)

执行上面代码,得到输出结果如下 -

F:\worksp\ruby>ruby array-at.rb
Mon
Sun
Sat

F:\worksp\ruby>

slice方法

slice方法类似于#[]方法。

fetch方法

fetch方法用于为数组范围索引提供默认的错误值。

示例:

#!/usr/bin/ruby 
# file : array-fetch.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]   
puts days.fetch(10)

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-fetch.rb
array-fetch.rb:4:in `fetch': index 10 outside of array bounds: -7...7 (IndexError)
        from array-fetch.rb:4:in `<main>'

F:\worksp\ruby>

修改上面示例代码,在未找到元素时返回一个默认的值 -

#!/usr/bin/ruby 
# file : array-fetch-df.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]   
puts days.fetch(10, 'NotFound')

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-fetch-df.rb
NotFound

F:\worksp\ruby>

first 和 last 方法

firstlast 方法方法将分别返回数组的第一个和最后一个元素。

示例:

#!/usr/bin/ruby 
# file : array-first-last.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]   
puts days.first   
puts days.last

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-first-last.rb
Mon
Sun

F:\worksp\ruby>

take 方法

take方法返回数组的前n个元素。

示例:

#!/usr/bin/ruby 
# file : array-take.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]   
puts days.take(1)   
puts days.take(2)   
puts days.take(3)

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-take.rb
Mon
Mon
Tue
Mon
Tue
Wed

F:\worksp\ruby>

drop方法

drop方法与take方法相反。 它返回在第n个元素之后的所有元素。

示例:

#!/usr/bin/ruby 
# file : array-drop.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]   
puts days.drop(5)   
puts days.drop(6)

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-drop.rb
Sat
Sun
Sun

F:\worksp\ruby>

将元素项添加到数组

可以以不同的方式向Ruby数组添加元素。

  • push<<
  • unshift
  • insert

push 或 <<

使用push<<,可以在数组的末尾添加项目/元素。

示例:

#!/usr/bin/ruby 
# file : array-push.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]  
puts days.push("Today")   
puts '-------------------------------'
puts days << ("Tomorrow")

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-push.rb
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Today
-------------------------------
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Today
Tomorrow

F:\worksp\ruby>

unshift方法

使用unshift,可以在数组的开头添加一个新元素。

示例:

#!/usr/bin/ruby 
# file : array-unshift.rb
days = ["Fri", "Sat", "Sun"]   
puts days.unshift("Today")

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-unshift.rb
Today
Fri
Sat
Sun

F:\worksp\ruby>

insert方法

使用insert,可以在数组中的任何位置添加一个新元素。 在这里,首先需要要定位元素的索引位置。

示例:

#!/usr/bin/ruby 
# file : array-insert.rb
days = ["Fri", "Sat", "Sun"]   
puts days.insert(2, "Thursday")

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-insert.rb
Fri
Sat
Thursday
Sun

F:\worksp\ruby>

从数组中删除项/元素

可以使用以下几种方式来删除Ruby数组元素。

  • pop
  • shift
  • delete
  • uniq

pop方法

使用pop方法,可以从数组的末尾删除项/元素。它返回删除的数据项/元素。

示例:

#!/usr/bin/ruby 
# file : array-pop.rb
days = ["Fri", "Sat", "Sun"]   
puts days.pop

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-pop.rb
Sun

F:\worksp\ruby>

shift方法

使用shift,可以从数组的起始处删除项/元素。 它返回删除的项目/元素。

示例:

#!/usr/bin/ruby 
# file : array-shift.rb
days = ["Fri", "Sat", "Sun"]   
puts days.shift

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-shift.rb
Fri

F:\worksp\ruby>

delete方法

使用delete方法,可以从数组中的任意位置删除项(元素)。 它返回删除的项目(元素)。

示例:

#!/usr/bin/ruby 
# file : array-delete.rb
days = ["Fri", "Sat", "Sun"]   
puts days.delete("Sat")

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-delete.rb
Sat

F:\worksp\ruby>

uniq方法

使用uniq方法,可以从数组中删除重复的元素。它返回删除重复元素后剩余的数组。

示例:

#!/usr/bin/ruby 
# file : array-uniq.rb
days = ["Fri", "Sat", "Sun", "Sat"]   
puts days.uniq

执行上面代码,得到以下结果 -

F:\worksp\ruby>ruby array-uniq.rb
Fri
Sat
Sun

F:\worksp\ruby>

上一篇: Ruby字符串 下一篇: Ruby哈希