Ruby数组
1、创建数组:
和其他编程语言一样,很容易创建一个数组,但要注意的是Ruby是一种弱类型脚本语 言,数组中各元素的类型可以互不相同,而且数组的长度可变:
arr = [“one”,”two”,”three”]
OR
arr = Array.new #an empty array
arr = Array.new(5) #[nil, nil, nil, nil, nil]
arr = Array.new(5,”hello”) #[”hello”, ”hello”, ”hello”, ”hello”, ”hello”]
Arr = Array(0..9) #[0,1,2,3,4,5,6,7,8,9]
当创建一个数组时,如果其元素为string类型且使用双引号,而你又不想老输入双引号, 那么我们可以使用下面的方法来创建(使用%w来创建用双引号括起来的字符串)
Arr = %w(this is an array of string) #使用空格作为元素的分隔符
#["this", "is", "an", "any", "of", "string"]
2、通过索引存取数组的值:
在Ruby中,数组索引可以是正整数(从前到后,从0开始)也可以是负整数(从后到 前,从-1开始)还可以是范围(Range):
arr = ['h','e','l','l','o',' ','w','o','r','l','d']
print arr[0,5]
puts
print arr[0..4]
puts
print arr[0...4]
puts
print arr[-5,5]
--------Results--------
hello
hello
hell
world
Note:arr[-5,5]:前一个整数-5表示开始的索引,后面一个整数5表示数量
3、复制数组:
当使用“=”将一个数组变量赋值给另一个数组变量时,这两个数组引用的仍然是同一 个数组,修改其中一个数组的值,另外一个也会改变。我们可以使用Clone方法复制一 个新数组:
arr = [‘one’,’two’,’three’,]
arr1= arr #arr和arr1引用的还是同一个数组,修改一个另一个也会修改
arr2=arr.clone #arr2是arr的一个新版本,修改arr2不影响arr
4、比较数组大小:
当使用< = >来比较两个数组a1和a2时,有三种情况:
- a1小于a2,返回-1
- a1等于a2,返回0
- a1大于a2,返回1
那么数组是如何比大小的呢?
当两个数组进行比较时,会把两个数组相同索引(从0开始)上的值拿来比较,如 [0,10,20]<=>[0,20,20],则会返回-1,因为当索引为1时,10< 20;
另外,如果比较的两个数组的元素是字符串,那么就比较它们的ASCII;
如果一个数组比另一个长且其他元素都相同,那么数组长的“大”;
然而,如果一个短数组里面的一个元素比另一个长数组里面的同位置的元素大,则认为 短数组“大”。
arr1=[1,2,3,4,5]
arr2=[1,2,3,4,5]
arr3=[1,2,3,4]
arr4=[1,2,3,5]
arr5=[1000,2000,3000]
arr6=[1,2]
arr7=[2,1]
arr8=["hello", "world"]
arr9=["Hello", "World"]
p(arr1<=>arr2) # 0
p(arr3<=>arr1) # -1
p(arr4<=>arr3) # 1
p(arr5<=>arr4) # 1
p(arr7<=>arr6) # 1
p(arr8<=>arr7) # nil
p(arr9<=>arr8) # -1
5、数组排序:
Sort方法使用比较操作符 <=> 来比较一个数组中邻近的元素的大小,但是这个不能比 较一个数组中包含有nil的值的情况;
arr.sort{|a,b| a.to_s <=> b.to_s}
说明: 在这arr是一个数组对象,a和b代表相邻的两个元素。本方法使用了to_s方 法把nil转换为一个空字符串,这样就可以对含有nil的数组进行排序了。此外,这个数 组本身的值不会发生任何变化。
6、添加和删除数组:
向数组添加元素:
Unshift():向数组的开头添加一个或多个元素,并返回新的长度。
Push():向数组的末尾添加一个或多个元素,并返回新的长度。
<<:向数组尾部添加一个数组元素。
向数组删除元素:
Shift:从头部删除数组元素,并返回被删除的数组元素。
Pop:从尾部删除数组元素,并返回被删除的元素。
posted on 2018-01-29 10:45 Angry-apple 阅读(337) 评论(0) 编辑 收藏 举报