首页 > 代码库 > 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