Chapter 4 Containers, Blocks and Iterators
Arrays
索引数组元素
a = [1,3,5,7,9]
a[-1] #=> 9
a[-2] #=> 7
a[-99]#=>nil
可以通过负值来索引一个数组,结果是尾部为-1,往前每次加-1
获取数组的一部分
通过指定范围
a = [1,3,5,7,9]
a[1,3] # => [3,5,7]
a[3,1] # => [7]
a[-3,2] # => [5,7]
a[1..3] # => [3,5,7]
a[1...3] # => [3,5]
a[3..3] # => [7]
a[-3..-1] # => [5,7,9]
通过first last
array =[1,2,3,4,5,6,7]
p array.first(4) # [1,2,3,4]
p array.last(4) # [4,5,6,7]
改变数组的一部分
a = [1,3,5,7,9]
a[2,2] = "cat" #=> [1,3,"cat",9]
a[2,0] = "dog" #=> [1,3,"dog","cat",9]
a[1,1] = [9,8,7] #=> [1,9,8,7,"dog","cat",9]
a[0..3] = [] #=> ["dog","cat",9]
a[5..6] = 99,98 #=> ["dog","cat",9,nil,nil,99,98]
a[1..2] = [1,2,3] #=> ["dog",1,2,3,nil,nil,99,98]
等号右边是数组的话,就会左边的数组范围内的元素替换为右边数组的元素。其中左边的范围为0的话,就插入左边指示的位置之前。
数据结构
通过使用不同的方法,数组可以被当作stacks, sets, dequeues, FIFO queues使用
Hashes
h = {'dog' => 'canine', 'cat' => 'feline', 'donkey' => 'asinine'}
h = { dog: 'canine', cat: 'feline', donkey: 'asinine'}
h = {:dog => 'canine', :cat => 'feline', :donkey=> 'asinine'}
可以在初始化一个hash的时候,指定其默认值
c=Hash.new(0)
这样用不存在的键索引这个hash时,就会返回0