Ruby中的数组

642 查看

好吧,在这里看到这么的多技术大牛。我根本不敢写博客。但是还是发出去试试吧,毕竟我是第一次写这些东西。
OK.数组就是一系列值,可以通过它们的位置或索引来访问它们。
光看不如直接写。试试才知道,实践出真相嘛。

创建数组:

001:0> [7, 8, 9, 0]   #一个简单的数组
=> [7, 8, 9, 0]
002:0> [1..8, 1..10]   #数组里面套range
=> [1..8, 1..10]
003:0> [[1, 2], [2, 3], [3, 4]]   #数组里面包括数组。二维数组
=> [[1, 2], [2, 3], [3, 4]]
004:0> []   #数组可以为空
=> []
005:0> [1+2, 2+3, 3+4]   #数组元素可以是表达式
=>[3, 5, 7]
数组里面还有特殊的语法
001:0> a = %w[a array]
=> ["a", "array"]
002:0> b = %w|the other array|
=> ["the", "other", "array"]
003:0> c = %W(1+1 1+2 1+3)
=> ["1+1", "1+2", "1+3"]

使用%w创建的是一个字符串数组。

使用构建函数创建数组
empty = Array.new   #一个空的数组
nils = Array.new(5)   #有5个空元素的数组
one = Array.new(1,1)   #有一个元素是1的数组
copyone = Array.new(one)   #复制了one这个数组
count = Array.new(5) {|k| k+1}   #从1到5的数组

使用数组

使用数组的值

只要通过索引值来索引就可以了,当然你不能超过它的size.
****数组是从0开始的***

test = [1,2,3,4,5]   #新建数组
test[1]   #=>2
test[-1]   #=>5
test[test.size-1]   #=>5
test[-test.size]   #=>1
test[0,1]   #还可以用两个整数来索引,第一个为其实索引,第二个为个数。=>1
test[0,2]   #=>[1,2]
test[1..2]  #还可以用Range索引。=>[2,3]
改变数组的值

与使用数组的值一样,只要在左侧赋值就可以了。

a = [1,2,3]
a[1] = 3 #a = [1,3,3]
a[0,1] = 3 #a = [3,3,3]
数组操作符

数组可以进行+、-、*、<<、|、&。操作

a = [1,2,3] + [4,5,6]   #[1,2,3,4,5,6]
a = a + [7,8,9]   #[1,2,3,4,5,6,7,8,9]
a = a + 10   #类型不同报错 = =
a = a - [1,7,8,9,0]   #[2,3,4,5,6] 会减去所有左边元素内所有与右边元素一样的
a = a * 2   #[2,3,4,5,6,2,3,4,5,6]
a << 1   #[2,3,4,5,6,2,3,4,5,6,1]
b = [2,3,4,8,9]
a | b #[2,3,4,5,6,8,9]  并集
b | a #[2,3,4,5,8,9,6,1] 也就是说a | b 与 b | a是不同的
a & b #[2,3,4]交集
b & a #[2,3,4]这个例子中看不出,其实a & b与b & a也是不同的