娃娃鴨學Ruby 13 陣列

2021-08-31 08:48:55 字數 2290 閱讀 3511

[b]陣列[/b]

乙個陣列就是一系列的值,可以通過這些值在該序列中的位置或索引來訪問它們。

ruby中

陣列的第乙個值的索引為0

size和length方法返回乙個陣列的元素個數,

最後乙個元素的索引是size-1

負索引從陣列的末尾開始計數

-1 表示陣列的最後乙個元素,倒數第二個為-2

越界 返回nil,不丟擲異常

ruby陣列是無型別且可變的

陣列元素不必屬於同乙個型別,可隨時改變

陣列的大小可以動態改變 向陣列新增元素,陣列會按需增長

超出陣列末尾的元素進行賦值,陣列將會自動增長,用nil來填充多出的位置(超出陣列開頭的元素進行賦值 是錯誤的)

[1,2,3]

[-10..0,0..10,] # ranges

[[1,2],[3,4],[5]] # an array of nested arrays

[x+y,x-y,x*y] #元素也可是表示式

# 空陣列 size=0

ruby支援一種表達陣列字面量的特殊語法。字面量的元素不包含空格的短字串

words= %w[this is a test] # same as:['this','is','a','test']

open=%w|([ #[1,2,3]

a=[0,1,4,9,16]

a[0] # 0

a[-1] # 16

a[-2] # 9

a[a.size-1] # a[-1] 16

a[-a.size] # a[0]

a[8] #nil

a[-8] #nil

改變操作:

a[0]="zero" # a is ["zero",1,4,9,16]

a[-1]=1..16 # a is ["zero",1,4,9,1..16]

a[8]=64 # a is ["zero",1,4,9,1..16,nil,nil,nil,64]

a[-9]=81 # error

索引兩種方式表示

1)利用兩個整數,第乙個表示起始索引,第二個表示被索引的元素個數

2)採用rang物件

索引都返回指定的子陣列

a=('a'..'e').to_a # range 轉換成陣列['a','b','c','d','e']

a[0,0] #

a[1,1] #['b']

a[-2,2] #['d','e']

a[0..2] #['a','b','c']

a[-2..-1] #['d','e']

a[0..-] #['a','b','c','d']

賦值操作

a[0,2]=['a','b'] # ['a','b','c','d','e']

a[2..5]=['c','d','e'] #['a','b','c','d','e']

a[0,0]=[1,2,3] #插入元素在a的位置

a[0..2]= #刪除元素

a[-1,1] =['z']

a[-1,1]='z'

a[-2,2]=nil操作+

a=[1,2,3] +[4,5] #[1,2,3,4,5]

a=a+[[6,7,8]] # [1,2,3,4,5,[6,7,8]]

a=a+9 #error

-從陣列中關掉另一陣列中的元素,生成拷貝返回

['a','b','c','b','a']-['b','c','d'] #['a','a']

<<

a=a<<1 # [1]

a<<2<<3 #[1,2,3]

a<<[4,5,6] #[1,2,3,[4,5,6]]

*a=[0]*8 #[0,0,0,0,0,0,0,0]

| 並集 & 交集

a=[1,1,2,2,3,3,4]

b=[5,5,4,4,3,3,2]

a|b #[1,2,3,4,5] 重複元素刪除

b|a #[5,4,3,2,1]

a&b #[2,3,4]

b&a #[4,3,2]

a=('a'..'z').to_a #['a','b',....'z']

a.each(|x| print x} #列印

其他方法

clear,compact!,delete_if,each_index,empty?,fill,flatten!,include?,index,join,pop,push,reverse,reverse_each,rindex,shift,sort,sort!,uniq!,unshift

2011-4-6 20:33 danny

娃娃鴨學Ruby 注釋

1 注釋 注釋以 字元開頭並持續到該行結束 如果 字元出現在乙個字串或正規表示式字面量裡,那麼它將作為此字串或正規表示式的一部分而非引入一段注釋。this entire line is a comment x this is a string y this is a regular expressi...

娃娃鴨學Ruby 25 If

if if 是最簡單的條件式,具有多種形式 if expression code end expression的值不是false或nil執行 可以有關鍵字 then if x 10 x 1 endif x 10 then x 1 end if x 10 then x 1 end1 else if e...

娃娃鴨學Ruby 15 範圍

b 範圍 ranges b 表示位於乙個開始值和乙個結束值之間的一些值。開始和結束值之間放置二三個點,如果使用兩個點,該範圍包含邊界 超過三個點,結尾點不包含在內 1.10 包含10 1.0.10.0 不包含10.0 include?方法測試乙個值是否被包含在乙個範圍內 cold war 1945....