`

娃娃鸭学Ruby-13、数组

阅读更多
数组
一个数组就是一系列的值,可以通过这些值在该序列中的位置或索引来访问它们。
Ruby中
   数组的第一个值的索引为0
   size和length方法返回一个数组的元素个数,
   最后一个元素的索引是size-1
   负索引从数组的末尾开始计数
   -1 表示数组的最后一个元素,倒数第二个为-2
   越界 返回nil,不抛出异常

Ruby数组是无类型且可变的
       数组元素不必属于同一个类型,可随时改变
       数组的大小可以动态改变 向数组添加元素,数组会按需增长
       超出数组末尾的元素进行赋值,数组将会自动增长,用nil来填充多出的位置(超出数组开头的元素进行赋值 是错误的)

[1,2,3]
[-10..0,0..10,]  # ranges
[[1,2],[3,4],[5]] # an array of nested arrays
[x+y,x-y,x*y] #元素也可是表达式
[]  # 空数组 size=0

Ruby支持一种表达数组字面量的特殊语法。字面量的元素不包含空格的短字符串
  words= %w[this is a test]   # same as:['this','is','a','test']
  open=%w|([{<|               # same as :['(','[','{','<']
  white=%W(\s \t \r \n)       #same as : ["\s","\t","\r","\n"]

通过Array.new构造函数来创建数组
empty=Array.new #[]
nils=Array.new(3)  #[nil,nil,nil]
zeros=Array.new(4,0) #[0,0,0,0]
copy=Array.new(nils)  # make a new copy of an existing array
count=Array.new(3){|i|i+1}   #[1,2,3]

a=[0,1,4,9,16]
a[0]  # 0
a[-1] # 16
a[-2] # 9
a[a.size-1] # a[-1] 16
a[-a.size] # a[0]
a[8]     #nil
a[-8]    #nil

改变操作:
a[0]="zero" # a is ["zero",1,4,9,16]
a[-1]=1..16  # a is ["zero",1,4,9,1..16]
a[8]=64      # a is ["zero",1,4,9,1..16,nil,nil,nil,64]
a[-9]=81 # Error

索引
两种方式表示
1)利用两个整数,第一个表示起始索引,第二个表示被索引的元素个数
2)采用Rang对象
索引都返回指定的子数组
a=('a'..'e').to_a  # Range 转换成数组['a','b','c','d','e']
a[0,0]  # []
a[1,1] #['b']
a[-2,2] #['d','e']
a[0..2] #['a','b','c']
a[-2..-1] #['d','e']
a[0..-] #['a','b','c','d']

赋值操作
a[0,2]=['A','B']  # ['A','B','c','d','e']
a[2..5]=['C','D','E'] #['A','B','C','D','E']
a[0,0]=[1,2,3] #插入元素在a的位置
a[0..2]=[] #删除元素
a[-1,1] =['Z']
a[-1,1]='Z'
a[-2,2]=nil

操作
+
a=[1,2,3] +[4,5] #[1,2,3,4,5]
a=a+[[6,7,8]] # [1,2,3,4,5,[6,7,8]]
a=a+9 #Error

-
从数组中关掉另一数组中的元素,生成拷贝返回
['a','b','c','b','a']-['b','c','d'] #['a','a']

<<
a=[]
a<<1 # [1]
a<<2<<3 #[1,2,3]
a<<[4,5,6] #[1,2,3,[4,5,6]]

*
a=[0]*8 #[0,0,0,0,0,0,0,0]

| 并集  & 交集
a=[1,1,2,2,3,3,4]
b=[5,5,4,4,3,3,2]
a|b  #[1,2,3,4,5]  重复元素删除
b|a #[5,4,3,2,1]
a&b #[2,3,4]
b&a #[4,3,2]

a=('A'..'Z').to_a  #['A','B',....'Z']
a.each(|x| print x} #打印

其他方法
clear,compact!,delete_if,each_index,empty?,fill,flatten!,include?,index,join,pop,push,reverse,reverse_each,rindex,shift,sort,sort!,uniq!,unshift

2011-4-6 20:33 danny
分享到:
评论

相关推荐

    ruby-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-debug-ide

    《深入理解Ruby调试工具:ruby-debug-ide》 在Ruby编程世界中,高效的问题排查与代码调试是开发者必备的技能之一。ruby-debug-ide正是这样一个强大的调试接口,它为Ruby开发环境提供了集成的调试支持,使得开发者...

    src-oepkgs/ruby-ruby2ruby

    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...

    ruby-1.8.7-p302.tar.gz

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302

    ruby-oracle相关的数据库操作的gems包

    标题提到的"ruby-oracle相关的数据库操作的gems包"是指一组用于连接和交互Oracle数据库的Ruby库。描述中指出,这些包主要基于oci8技术,oci8是Oracle公司提供的一个C接口,允许其他编程语言,如Ruby,与Oracle数据库...

    hw-ruby-intro.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    在本压缩包“hw-ruby-intro.zip”中,我们主要关注的是RUBY语言在SaaS(Software as a Service)软件工程中的应用。这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了...

    ruby-runtime手动插件.zip

    该压缩包文件 "ruby-runtime.hpi" 是 Jenkins 插件的标准格式,扩展名为 ".hpi"(Jenkins Plugin Installable Unit)。HPI 文件可以直接上传到 Jenkins 管理界面的“管理插件”部分进行安装。安装完成后,你可以在 ...

    ruby-libs-1.8.7.352-13.el6.x86_64.rpm

    ruby-libs-1.8.7.352-13.el6.x86_64.rpm ruby-libs-1.8.7.352-13.el6.x86_64.rpm

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    Ruby-GNOME2.zip

    Ruby-GNOME2提供GNOME 2.0开发环境的Ruby绑定,目前在活跃更新中。如果你喜欢GTK的界面,你一定会喜欢Ruby-GNOME2。GTK目前提供Linux、 Windows等多个平台的运行库,也就是说使用GTK开发的应用程序可以在多个平台下...

    ruby-2.4.3.tar.gz

    在这个场景中,"ruby-2.4.3.tar.gz"是一个压缩包,其中包含了Ruby 2.4.3的源代码。这个版本是在2017年发布的,相比CentOS 6.x默认的Ruby版本,它提供了更多的改进和新特性。Ruby 2.4系列引入了性能优化、新的语法糖...

    ruby-1.9.3-p547.tar.gz

    在本压缩包"ruby-1.9.3-p547.tar.gz"中,包含的是Ruby语言的一个特定版本——1.9.3-p547。 Ruby 1.9.3是Ruby的一个重要版本,发布于2012年,它带来了许多性能提升和新特性。这个版本对Ruby的语法进行了改进,包括更...

    ruby-2.4.5.tar.gz

    解压`ruby-2.4.5.tar.gz`后,你会得到一个名为`ruby-2.4.5`的目录,其中包含了Ruby源代码的所有文件和子目录。这些文件可能包括但不限于: 1. `README`: 提供关于该版本的基本信息和安装指南。 2. `INSTALL`: 包含...

    ruby-debug-1.87.rar

    《Ruby调试工具:ruby-debug-1.87详解》 Ruby是一种动态、开源的编程语言,以其简洁的语法和强大的元编程能力深受开发者喜爱。在开发过程中,调试是必不可少的一环,而`ruby-debug-1.87`就是Ruby社区中广泛使用的...

    ruby-1.9.2-p290.tar.gz

    标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...

    ruby-2.2.4.tar.gz、rubygems-2.6.2.zip、redis-3.2.2.gem

    `ruby-2.2.4.tar.gz`需要先解压,然后通过`configure`脚本和`make`命令编译安装。`rubygems-2.6.2.zip`解压后执行安装脚本来安装。Redis则通过`gem install redis-3.2.2.gem`来安装其客户端库。配置Redis服务,用户...

    ruby-1.8.7.352-13.el6.x86_64.rpm

    ruby-1.8.7.352-13.el6.x86_64.rpm ruby-1.8.7.352-13.el6.x86_64.rpm

    ruby-2.5.8.tar.gz

    - 解压`ruby-2.5.8.tar.gz`:使用`tar -zxvf ruby-2.5.8.tar.gz`命令解压。 - 编译与安装:进入解压后的目录,运行`./configure`,然后`make`和`make install`进行编译和安装。 - 验证安装:通过`ruby -v`检查...

    ruby-2.6.5.tar.gz

    在终端中输入`tar -zxvf ruby-2.6.5.tar.gz`,这会创建一个名为`ruby-2.6.5`的目录,包含所有源代码。 2. **进入目录**:使用`cd`命令进入新解压的目录,如`cd ruby-2.6.5`。 3. **配置**:运行`./configure`脚本...

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

Global site tag (gtag.js) - Google Analytics