a = [ 3.14159, "pie", 99 ]
a.class => Array
a.length => 3
a[0] => 3.14159 # Index以0开始
a[3] => nil # 没有异常,返回nil
a[-1] => 99 # Index -1 返回最后一个元素
a[-a.length] => 3.14159 # 返回第一元素
b = Array.new
b[100] = 1
a = [ 1, 3, 5, 7, 9 ]
a[3, 2] => [ 7, 9 ] # 从Index3开始,取2个
a[-3, 2] => [ 5, 7 ] # 从倒数第3个开始取2个
两种Ranges,在Pascal是见过其中一种, ..
1..100 表示1到100
1...100 表示1到99, 不包括100
-5..-1 表示-5, -4, -3, -2, -1
三点的Range不包括第二个端点
a[-3..-1] # 取最后3个元素
a[4..-2] # 从第4个元素起(从0开始计数),取到倒数第二个
如果Range的第二个端点在第一个前面,返回空数组[], 比如假设a只有5个元素,a[4..-2] => []
(注:碰到一个@vnc_port[6..-1],愣是不知道什么意思!看到这里才知道,是从第四个元素开始,取到倒数第一个也就是最后一个元素)
修改数组
a = [ 1, 3, 5, 7, 9 ]
a[2, 2] = 'cat' => a = [ 1, 3, 'cat', 9 ] # 删除左边[2, 2]选定的区域,插入右边的元素
a[2, 0] = 'dog' => a = [ 1, 3, 'dog', 'cat', 9 ] # 如果左边选定的区域为空,相当于插入元素
a[1, 1] = [ 9, 8, 7 ] => a = [ 1, 9, 8, 7, 'dog', 'cat', 9 ] # 右边为数组,逐个插入
a[0..3] = [] => a = [ 'dog', 'cat', 9 ] # 右边为空,相当于删除
a[5..6] = 99, 98 => a = [ 'dog', 'cat', 9, nil, nil, 99, 98 ]