#ruby数组可以容纳不同的对象,并且没有多维数组的概念
#数组的定义===========
a = Array.new
a = Array.new(5) #创建 5个nil 元素的数组 [nil,nil,nil,nil,nil]
a = Array.new(5,1) #创建5个 元素都是1的数组 [1,1,1,1,1]
a = [] #创建一个空数组
a = [1,"a",3,2]
%w(one two three) #返回的是 ["one","two","three"]
#数组小妙用: 利用数组并行赋值
a,b,c,d = [1,"a",[1,2],(1..5)]
#运算和常用方法============
[1,2]<<3 #返回 [1,2,3]
[1,2]+[1,3] #返回 [1,2,1,3]
[1,2,3]-[1,4] #返回 [2,3]
[1,2,3]&[3,4] #返回[3]
[1,2,3]|[3,4] #返回[1,2,3,4]
[1,2]*2 #如果*号后面是数字,会进行重复 ,返回[1,2,1,2]
[1,2]*'--' #如果是字符串,会用该字符串连接数组,返回一个字符串, 返回 '1--2'
#枚举能用的方法都能用在数组上
ary.size/ary.length #数组包含元素的个数
ary.concat(other_array) #把other_array中的元素添加到arr中
ary.delete(obj) #删除数组中和obj相等的元素,如果找到则返回obj,否则返回nil
#eg:
a=[1,2,3,3]
a.delete(3) # a = [1,2] 并且返回3
ary.delete(index) #删除指定索引的元素,并返回删除的obj
ary.delete_if{|item| block} #删除符合条件(使block为true)的元素
ary.first/ary.last #返回数组的第一个元素/最后一个元素
ary.compact #返回一个数组的副本,并删除数组中的nil元素
[nil,1,2,nil,3,4].compact #返回 [1,2,3,4]
ary.flattern #递归数组中的数组,并返回一个大数组
[1,2,[3,4],5].flattern #返回[1,2,3,4,5]
ary.index(obj) #返回元素的索引
[1,2,3].index(3) #返回2
ary.insert(index,obj) #将某个对象插入到数组的index中
ary.join(separator) #用分隔符合并数组并且返回一个字符串
[1,2,3].join("-") #返回 "1-2-3"
ary.pop/ary.shift #删除数组中的最后一个/开头一个 元素
ary.push(obj) #将obj追加到数组的后面
ary.replace(other_array) #使用other_array替换原来的内容
ary.reverse #返回一个反序的数组