Ruby陣列是物件的有序集合。 它們可以儲存像整數,數位,雜湊,字串,符號或任何其他陣列的物件。
其索引開始於0
。負數索引是從陣列末尾的-1
位置開始。 例如,-1
表示陣列的最後一個元素,0
表示陣列的第一個元素。
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
方法來構造一個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方法
使用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>