首页 > 代码库 > ruby学习之Array

ruby学习之Array

ruby中数组的大小是可以随时改变的,数组中的元素只会保存对对象的引用。

一、定义

a=Array.new()

a=Array.new(5)   创建5个nil元素的数组

a=Array.new(5,1) 创建5个初始值为1的数组

a=[]

a=[1,2,”a”]

%w(a b c d ab)用来创建字符串数组,不过无法处理带空格的字符串

                      同[“a”,”b”,”c”,”d”,”ab”]

另外,可以用数组来并行赋值

a=1

b=2

可用 a,b=[1,2]代替

二、运算和常用方法

<<  追加,同ary.push(obj)

+  -  & | *

ary.size/ary.length

ary.concat(other_array)  追加数组

ary.clear

ary.delete(obj) 

ary.delete_at(index)

ary.delete_if{|item| block} 删除符合条件的元素

ary.first/ary.last

ary.compact   返回去除nil的副本

ary.flatten  数组的元素变为基本元素

ary.index(obj)  第一个等于obj的元素的索引

ary.insert(index,obj) 插入

ary.join(separator)  合并数组为一个用separateor链接的字符串

ary.pop/ary.shift  删除最后、最前

ary.push(obj)   追加

ary.replace(other_array)  替换为数组

ary.reverse  反转

test:

#!/usr/bin/ruby 
def printResult(args) 
    print args 
    puts "" 
end
printResult [1,2]<<3 
printResult [1,2]+[4,5] 
printResult [1,2]-[1] 
printResult [1,2,3]&[2,3,4] 
printResult [1,2,3]|[2,3,4] 
printResult [1]*5 
printResult "#{[1,2].size()} #{[1,2].length()}" 
printResult [1,2].concat([2]) 
a=[1,2] 
a.clear() 
printResult a.length 
a=[2,3,4] 
printResult a.delete(3) 
printResult a 
printResult a.delete_at(0) 
printResult a 
printResult [1,2,3,4].delete_if{|item| item==1} 
a=[1,2,3,4,nil] 
printResult a.compact 
b=a.compact() 
a[1]=5 
printResult b[1] 
printResult [1,2,[1,2]].flatten() 
printResult [1,2,3].index(2) 
printResult [1,3].insert(1,2) 
printResult [1,2,3].join("@@@") 
a=[1,2,3] 
printResult a.pop() 
printResult a 
a.shift() 
printResult a 
printResult a.push(2) 
printResult a.replace([nil,2,3]) 
printResult a.reverse()


result:

[1, 2, 3]
[1, 2, 4, 5]
[2]
[2, 3]
[1, 2, 3, 4]
[1, 1, 1, 1, 1]
2 2
[1, 2, 2]
0
3
[2, 4]
2
[4]
[2, 3, 4]
[1, 2, 3, 4]
2
[1, 2, 1, 2]
1
[1, 2, 3]
1@@@2@@@3
3
[1, 2]
[2]
[2, 2]
[nil, 2, 3]
[3, 2, nil]
[Finished in 0.1s]

三、搜索、修改和排序迭代

     参照ruby之Enumerable

ruby学习之Array