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>