发表时间:2009-06-06
最后修改:2009-06-06
Ruby的数组和hash的关系与区别
Ruby的数组和hash都是带索引的集合。它们都可以容纳一组对象,并允许以索引键来访问这些对象。对数组而言,索引键是一个整数;而hash则允许用任何对象作为索引键。数组和hash都能够自动增长以容纳新的元素。数组和hash都可以容纳不同类型的对象。
数组的定义
方括号里列出元素并用逗号将它们相互隔开来创建一个数组
arr=[1,3,3,"hello"];
对于Ruby的数组而言,每个数组元素都处于数组的一个位置上,用一个整数(既可以是正整数有可以是负整数)来索引。
当我们从左向右访问数组元素时,最左边数组元素的索引从0开始,然后依次是1,2,3,。。。
当我们从右向左访问数组元素时,最左边数组元素的索引从-1开始,然后依次是-2,-3,。。。
在Ruby中数组中的元素可以是nil(null)。nil在Ruby中是一个对象与其它对象一样,不过它恰好代表“什么都没有”。
Ruby的数组时Array类的实例
#定一个空数组
my_array = Array.new
puts "数组的长度:"+my_array.size.to_s
my_array[3]="Hello";
puts "数组的长度:"+my_array.size.to_s
my_array[5]="4...7";
p my_array
puts "数组的长度:"+my_array.size.to_s
输出结果
数组的长度:0
数组的长度:4
[nil, nil, nil, "Hello", nil, "4...7"]
数组的长度:6
数组的%表示方法
ruby语言可以吧一个包含多个空格的字符串转换成数组,ruby会把空格当成数组分隔符,每个空格分隔的子串都会被当作一个数组元素
使用%w{...}或者%W{...}表示
%w{}与%W{}的功能大致相同,但%W会进行更多额外的替换
a=%w{ant bee cat}
结果
a=['ant','bee','cat']
数组的常用方法
array[n,m] 截取数组array的子数组,从索引n开始截取,截取长度为m个元素组成新数组
array[n..m] 截取数组array的子数组,从索引n开始截取,截到索引为m的元素,包括索引为m的元素
array[n...m] 截取数组array的子数组,从索引n开始截取,截到索引为m的元素,不包括索引为m的元素
就像前面提到的字符串一样.数组也可以相乘或相加
ary=[1,2,"3"]
p ary.size
s=ary+[1,3];
t=s * 2
p s
p t
输出结果
3
[1, 2, "3", 1, 3]
[1, 2, "3", 1, 3, 1, 2, "3", 1, 3]
数组可以和字符串互相转化,分别使用join和split:
ary=[1,2,"3"]
p str = ary.join(":")
p str.split(":")
输出结果
"1:2:3"
["1", "2", "3"]
数组的一个常用的方法是<<,该方法会把一个值附加到数组的尾端。
arrs= []
6.times do |value|
arrs<<value
end
p arrs
end
输出结果
[0, 1, 2, 3, 4, 5]