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
个元素。
要知道数组的大小,使用 size
或 length
方法。
示例:
#!/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 方法
first
和 last
方法方法将分别返回数组的第一个和最后一个元素。
示例:
#!/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>