標籤:
1、建立數組
a=Array.new(6,obj=nil) #=> [nil, nil, nil, nil, nil, nil] 設定預設值
a=Array.new(6) #=> [nil, nil, nil, nil, nil, nil] 預設值為nil
a=Array.new(6,obj=1){|obj| obj+1} #=> [1, 2, 3, 4, 5, 6] 預設值進行塊裡面的迭代
a=%w{1 2 3 4 5 6} #=> [1, 2, 3, 4, 5, 6]
a=[1, 2, 3, 4, 5, 6] #=> [1, 2, 3, 4, 5, 6]
2、數組操作
require ‘iconv‘
methods=[
["a","數組"],
[‘a.length‘,"長度"],
[‘a[-1]‘,‘倒數第一個‘],
[‘a[10]‘,‘超出數組的長度下標都表示nil‘],
[‘a[2,3]‘,‘表示下標從2開始的連續3個數組段‘],
[‘a[1..3]‘,‘表示下標從1到下標3的數組段‘],
[‘a[1..3]‘,‘表示下標從1到下標2的數組段,不包含最後一個數‘],
[‘a.delete_at(0)‘,‘把第一個元素給刪除了‘],
[‘a.insert(0, 1)‘,‘把1插入到數組開始處‘],
[‘a.slice!(1, 2)‘,‘(slice)表示擷取下標1開始的2個元素不刪除,(slice!)擷取完後刪除元素‘],
[‘a<<7‘,‘添加到數組末尾 同 a.push(7)‘],
[‘a.pop(2)‘,‘刪除末尾2個元素 同 a.slice!(-1,2)‘],
[‘a.shift(2)‘,‘刪除前面兩個元素 同 a.slice!(0,2)‘],
[‘a.unshift(1,2)‘,‘前面插入兩個元素 同 a.insert(0, 1,2)‘],
[‘a=[0]+a‘,‘[(+ <<,並集包含重複)(|,並集不包含重複)] [&,交集] [-,差集]‘],
]
methods.each { |method| puts "#{method[0]} => #{eval(method[0])} # #{Iconv.conv("GB18030","UTF-8",method[1]) }" }
為了達到輸出這種格式 “a => 123456 # 數組”而又不用每個去格式化,所有可以利用ruby的 eval動態執行代碼,由於有中文所以用到了
Iconv.conv 方法轉碼。
輸出如下
a => 123456 # 數組
a.length => 6 # 長度
a[-1] => 6 # 倒數第一個
a[10] => # 超出數組的長度下標都表示nil
a[2,3] => 345 # 表示下標從2開始的連續3個數組段
a[1..3] => 234 # 表示下標從1到下標3的數組段
a[1..3] => 234 # 表示下標從1到下標2的數組段,不包含最後一個數
a.delete_at(0) => 1 # 把第一個元素給刪除了
a.insert(0, 1) => 123456 # 把1插入到數組開始處
a.slice!(1, 2) => 23 # (slice)表示擷取下標1開始的2個元素不刪除,(slice!)擷取完後刪除元素
a<<7 => 14567 # 添加到數組末尾 同 a.push(7)
a.pop(2) => 67 # 刪除末尾2個元素 同 a.slice!(-1,2)
a.shift(2) => 14 # 刪除前面兩個元素 同 a.slice!(0,2)
a.unshift(1,2) => 125 # 前面插入兩個元素 同 a.insert(0, 1,2)
a=[0]+a => 0125 # [(+ <<,並集包含重複)(|,並集不包含重複)] [&,交集] [-,差集]
Ruby-Array數組