[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....