ǰλã >> Ruby/Rails >> ruby学习笔?-Array
  ϸ

ruby学习笔?-Array

ȶȣ118   ʱ䣺2016-04-29 02:22:35.0
ruby学习笔?--Array

?由于工作?要,?近在学习Ruby,现在主要在看两??/span>Ruby on Rail程序设????解?和?/span>Ruby of book》?毕竟是要在工作??而且时间还有限,?以我在看书和做例子的同时也简单?录下了一些基?识点,方便用的时候查找?有兴趣的朋友?迎一起交流?习:

l         数组

1?span style="font-size: 7pt; line-height: normal;">  创建数组?/span>

??和其它很多编程???样,很?易创建一??/span>,但?注意的是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”]

       当创建一?组时,?果其元素?/span>string类型且使用单引号,?你又不想?输入单引号,那么我?以使用下面的方法来创?/span>(使用%W来创建用双引号括起来的字符串)?/span>

arr = %w( this is an array of strings)    #使用空格作为元素的分隔?

 

2.通过索引存取数组的?:

?/span>Ruby?数组索引???整数(从前到后,?/span>0?始)也可以是负整数(从后到前,从-1??/span>)还可以是范围?/span>Range?/span>:

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]:前一??span style="font-size: 13px;">-5表示?始的索引,后???span style="font-size: 13px;">5表示数量

 

3..复制数组?/span>

当使?/span>?/span>=?/span>将一?组变量赋值给另一?组变量时,这两个数组变量引用的仍然是同一?组,?其中??组的值,另一?会修改?我?以使?span style="font-size: 13px; color: #ff0000;">Clone方法复制??数组:

arr = [?/span>one?/span>,?/span>two?/span>,?/span>three?/span>,]

arr1= arr               #arr?/span>arr1引用的还???组,?????会修?/span>

arr2=arr.clone        #arr2?/span>arr的一?版本,修?/span>arr2不影?/span>arr

 

4..比较数组大小?/span>

       当使?/span> <=> 来比较两??/span>a1?/span>a2时,有三种情况:

1.       a1 小于 a2?/span> 返回 -1

2.       a1 等于 a2?/span> 返回 0

3.       a1 大于 a2?/span> 返回 1

那么,数组是如何比大小的?

当两?组进行比较时,会把两?组相同索?/span>(?/span>0??/span>)上的值拿来比较,?/span> [0,10,20]<=> [0,20,20], 则会返回-1,因为当索引?/span>1时,10<20?/span>

 

另?,?果比较的两个数组的元素是字?串,那么就比较它?ASCII;如果???/span>比另??且其它元素都相同,那么数组长的?大’??/span>

然?,如果??数组里面的一?素比另一?数组里面的同位置的元素大,则认为?组?大’??/span>

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.数组排序?/span>

Sort方法使用比较操作?/span> <=> 来比较一?组中邻近的元素的大小,但??能比较一?组中包含?/span>nil的?的情况?/span>

arr.sort{|a,b| a.to_s <=> b.to_s}

说明?/span> 在这arr??组?象,a?/span>b代表相邻的两?素?本方法使用?/span>to_s方法?/span>nil?为一?字?串,这样就可以??nil的数组进行排序了。?外,这个数组?的?不会发生任何变在??/span>

 

6.添加和删除数组元素:

       向数组添加元素:

unshift:向数组头部添加数组元素

push:   向数组头部尾数组元素

<< : 向数组尾部添加一?组元?/span>

向数组删除元素:

shift: 从头部删除数组元素,并返回?删除的元?/span>

pop: 从尾删除数组元素,并返回?除的元素


作?:Even.He 
出??a style="color: #1d58d1;" target="_blank" href="http://www.cnblogs.com/puresoul/">http://www.cnblogs.com/puresoul/ 
?版权归作者和博??有,欢迎?,但?作?同意必须保留?段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利?/p>

 
分类: Ruby
标?: ruby, array