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>