Ruby數(shù)組是對(duì)象的有序集合。 它們可以保存像整數(shù),數(shù)字,散列,字符串,符號(hào)或任何其他數(shù)組的對(duì)象。
其索引開(kāi)始于0。負(fù)數(shù)索引是從數(shù)組末尾的-1位置開(kāi)始。 例如,-1表示數(shù)組的最后一個(gè)元素,0表示數(shù)組的第一個(gè)元素。
Ruby數(shù)組以許多方式創(chuàng)建。
[]new方法使用文字構(gòu)造函數(shù)[]構(gòu)建Ruby數(shù)組。 單個(gè)數(shù)組可以包含不同類型的對(duì)象。
例如,以下數(shù)組包含一個(gè)整數(shù),浮點(diǎn)數(shù)和一個(gè)字符串。
#!/usr/bin/ruby
arr = [4, 4.0, "maxsu", ]
puts arr
執(zhí)行上面代碼,得到以下輸出結(jié)果 -
F:\worksp\ruby>ruby array-contruct.rb
4
4.0
maxsu
F:\worksp\ruby>
通過(guò)使用零個(gè),一個(gè)或多個(gè)參數(shù)調(diào)用::new方法來(lái)構(gòu)造一個(gè)Ruby數(shù)組。
語(yǔ)法:
arrayName = Array.new
設(shè)置數(shù)組的大小,如下語(yǔ)法 -
語(yǔ)法:
arrayName = Array.new(10)
在這里,要?jiǎng)?chuàng)建的數(shù)組大小是10個(gè)元素。
要知道數(shù)組的大小,使用 size 或 length 方法。
示例:
#!/usr/bin/ruby
exm = Array.new(10)
puts exm.size
puts exm.length
執(zhí)行上面代碼,輸出結(jié)果如下 -
F:\worksp\ruby>ruby array-size.rb
10
10
F:\worksp\ruby>
示例2
#!/usr/bin/ruby
exm = Array("a"..."z")
puts "#{exm}"
執(zhí)行上面代碼得到以下結(jié)果 -
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>
可以使用#[]方法訪問(wèn)Ruby數(shù)組中的元素。也可以傳遞一個(gè)或多個(gè)參數(shù),甚至傳遞一系列參數(shù)。
#[] 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]
執(zhí)行上面代碼,得到輸出結(jié)果如下 -
F:\worksp\ruby>ruby array-elements.rb
Mon
Sat
Wed
Thu
Fri
Tue
Wed
Thu
Fri
Sat
Sun
F:\worksp\ruby>
at方法
要訪問(wèn)特定的元素,也可以使用at方法。
示例:
#!/usr/bin/ruby
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
puts days.at(0)
puts days.at(-1)
puts days.at(5)
執(zhí)行上面代碼,得到輸出結(jié)果如下 -
F:\worksp\ruby>ruby array-at.rb
Mon
Sun
Sat
F:\worksp\ruby>
slice方法
slice方法類似于#[]方法。
fetch方法
fetch方法用于為數(shù)組范圍索引提供默認(rèn)的錯(cuò)誤值。
示例:
#!/usr/bin/ruby
# file : array-fetch.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
puts days.fetch(10)
執(zhí)行上面代碼,得到以下結(jié)果 -
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>
修改上面示例代碼,在未找到元素時(shí)返回一個(gè)默認(rèn)的值 -
#!/usr/bin/ruby
# file : array-fetch-df.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
puts days.fetch(10, 'NotFound')
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-fetch-df.rb
NotFound
F:\worksp\ruby>
first 和 last 方法
first 和 last 方法方法將分別返回?cái)?shù)組的第一個(gè)和最后一個(gè)元素。
示例:
#!/usr/bin/ruby
# file : array-first-last.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
puts days.first
puts days.last
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-first-last.rb
Mon
Sun
F:\worksp\ruby>
take 方法
take方法返回?cái)?shù)組的前n個(gè)元素。
示例:
#!/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)
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-take.rb
Mon
Mon
Tue
Mon
Tue
Wed
F:\worksp\ruby>
drop方法
drop方法與take方法相反。 它返回在第n個(gè)元素之后的所有元素。
示例:
#!/usr/bin/ruby
# file : array-drop.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
puts days.drop(5)
puts days.drop(6)
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-drop.rb
Sat
Sun
Sun
F:\worksp\ruby>
可以以不同的方式向Ruby數(shù)組添加元素。
push 或 <<unshiftinsertpush 或 <<
使用push或<<,可以在數(shù)組的末尾添加項(xiàng)目/元素。
示例:
#!/usr/bin/ruby
# file : array-push.rb
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
puts days.push("Today")
puts '-------------------------------'
puts days << ("Tomorrow")
執(zhí)行上面代碼,得到以下結(jié)果 -
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,可以在數(shù)組的開(kāi)頭添加一個(gè)新元素。
示例:
#!/usr/bin/ruby
# file : array-unshift.rb
days = ["Fri", "Sat", "Sun"]
puts days.unshift("Today")
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-unshift.rb
Today
Fri
Sat
Sun
F:\worksp\ruby>
insert方法
使用insert,可以在數(shù)組中的任何位置添加一個(gè)新元素。 在這里,首先需要要定位元素的索引位置。
示例:
#!/usr/bin/ruby
# file : array-insert.rb
days = ["Fri", "Sat", "Sun"]
puts days.insert(2, "Thursday")
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-insert.rb
Fri
Sat
Thursday
Sun
F:\worksp\ruby>
可以使用以下幾種方式來(lái)刪除Ruby數(shù)組元素。
pop方法
使用pop方法,可以從數(shù)組的末尾刪除項(xiàng)/元素。它返回刪除的數(shù)據(jù)項(xiàng)/元素。
示例:
#!/usr/bin/ruby
# file : array-pop.rb
days = ["Fri", "Sat", "Sun"]
puts days.pop
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-pop.rb
Sun
F:\worksp\ruby>
shift方法
使用shift,可以從數(shù)組的起始處刪除項(xiàng)/元素。 它返回刪除的項(xiàng)目/元素。
示例:
#!/usr/bin/ruby
# file : array-shift.rb
days = ["Fri", "Sat", "Sun"]
puts days.shift
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-shift.rb
Fri
F:\worksp\ruby>
delete方法
使用delete方法,可以從數(shù)組中的任意位置刪除項(xiàng)(元素)。 它返回刪除的項(xiàng)目(元素)。
示例:
#!/usr/bin/ruby
# file : array-delete.rb
days = ["Fri", "Sat", "Sun"]
puts days.delete("Sat")
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-delete.rb
Sat
F:\worksp\ruby>
uniq方法
使用uniq方法,可以從數(shù)組中刪除重復(fù)的元素。它返回刪除重復(fù)元素后剩余的數(shù)組。
示例:
#!/usr/bin/ruby
# file : array-uniq.rb
days = ["Fri", "Sat", "Sun", "Sat"]
puts days.uniq
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby array-uniq.rb
Fri
Sat
Sun
F:\worksp\ruby>