?由于工作?要,?近在学习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>