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
個元素。
要知道數組的大小,使用 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>