由于工作需要,最近在学习Ruby,现在主要在看两本书《Ruby on Rail程序设计技术详解》和《Ruby of book》。毕竟是要在工作中运用,而且时间还有限,所以我在看书和做例子的同时也简单记录下了一些基本知识点,方便用的时候查找。有兴趣的朋友欢迎一起交流学习:
l 数组
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”]
当创建一个数组时,如果其元素为string类型且使用单引号,而你又不想老输入单引号,那么我们可以使用下面的方法来创建(使用%W来创建用双引号括起来的字符串):
arr = %w( this is an array of strings) #使用空格作为元素的分隔符
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时,有三种情况:
1. a1 小于 a2, 返回 -1
2. a1 等于 a2, 返回 0
3. 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: 从尾删除数组元素,并返回被删除的元素
作者:Even.He
出处:http://www.cnblogs.com/puresoul/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关推荐
《深入理解Ruby调试工具:ruby-debug-ide》 在Ruby编程世界中,高效的问题排查与代码调试是开发者必备的技能之一。ruby-debug-ide正是这样一个强大的调试接口,它为Ruby开发环境提供了集成的调试支持,使得开发者...
Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302
ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm
在本压缩包"ruby-1.9.3-p547.tar.gz"中,包含的是Ruby语言的一个特定版本——1.9.3-p547。 Ruby 1.9.3是Ruby的一个重要版本,发布于2012年,它带来了许多性能提升和新特性。这个版本对Ruby的语法进行了改进,包括更...
标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...
src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...
mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe
《Ruby调试工具:ruby-debug-1.87详解》 Ruby是一种动态、开源的编程语言,以其简洁的语法和强大的元编程能力深受开发者喜爱。在开发过程中,调试是必不可少的一环,而`ruby-debug-1.87`就是Ruby社区中广泛使用的...
ruby-debug-base19-0.11.26.gem
标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...
Ruby1.8.6 One-Click Installer
在压缩包文件`test001`中,可能包含了上述示例的完整代码,供读者参考和学习。通过实践和理解这些基本概念,你将能够利用Ruby+Selenium-Webdriver构建起自己的自动化测试框架,有效地测试Web应用的各个功能。
学习 Ruby 的旅程即将开始! Ruby 是一种功能强大、灵活的编程语言,广泛应用于 Web 开发、脚本编写和系统管理等领域。下面是学习 Ruby 的一些实用建议:首先,了解 Ruby 的基本概念和语法。 Ruby 是一种面向对象的...
ruby-1.8.7-p358-doc-chm.7z 3.65 MB 1,399 Other Other ruby-1.8.7-p358-i386-mingw32.7z 5.12 MB 1,503 i386 Other rubyinstaller-1.8.7-p358.exe 11.69 MB 13,534 i386 .exe (Windows executable)
《Ruby与CouchDB:深入理解ruby-couch-db源码》 Ruby是一种强大的动态编程语言,以其简洁的语法和灵活性深受开发者喜爱。在Web开发领域,Ruby常常与Rails框架一起被用于构建高效、可维护的应用程序。而CouchDB则是...
在本压缩包“ruby-1.9.1-p0-i386-mswin32.rar”中,包含的是针对i386架构的Windows 32位系统的Ruby安装程序。这个版本(p0)意味着它是1.9.1主版本下的一个特定补丁级别,通常包括了一些错误修复和优化。 Ruby的...
ruby186-25 for windows
ruby-doc-bundle.chm ruby-doc-bundle.chm
官方离线安装包,亲测可用
"ruby-1.9.2-preview1-x64-mswin64-80.zip" 是一个针对Windows平台的64位版本的Ruby 1.9.2预览版1的压缩包。这个版本在当时是一个重要的更新,因为它引入了许多改进和新特性。 1. **Ruby 1.9.2**: Ruby 1.9是Ruby...