ruby学习笔记——容器、Blocks和迭代器

数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 通过字面量来创建Array对象
>a = [ 1, 3, 5, 7, 9 ]
# 显式的创建
>b =Array.new
#数组的长度
>a.length

# 索引
a[-1] ->   9
a[-2] ->   7
a[-99] ->  nil
# 也可以使用一对数字[start, count]来访问数组。这将返回一个包含start开始的count个对象引用的新数组
a[1, 3] ->  [3, 5, 7]
a[3, 1] ->  [7]
a[-3, 2]  ->    [5, 7]
# 可以使用range来对数组进行索引,其开始和结束位置被两个或3个点分割开。两个点的形式包含结束位置,而3个点的形式不包含
a[1..3]    ->    [3, 5, 7]
a[1...3]    ->    [3, 5]
a[3..3]    ->    [7]
a[-3..-1]   ->    [5, 7, 9]

#添加元素
>a.push(22)
 => [1, 3, 5, 7, 9, 22]
#删除并返回第一个元素
>a.shift
 => 1
#删除并返回最后一个元素
>a.pop
 => 22

#查找
>a.find{|i| i==3}
#遍历
>a.each{|i| puts i}
#收集,从集合中获得各个元素并传递给block。block返回的结果被用来生成一个新的数组
>a.collect{|x| x+1}

散列表

1
2
3
4
5
6
7
h = { 'dog' => 'canine', 'cat' => 'feline', 'donkey' => 'asinine'}
h.length ->    3
h['dog'] ->    'canine'
h['cow'] =    'bovine'
h[12]    =    'dodecine'
h['cat'] =    99
h  ->    {"cow"=>"bovine", "cat"=>99, 12=>"dodecine", "donkey"=>"asinine", "dog"=>"canine"}