1. 数组的定义
数组是许多指向对象的引用按顺序排列的数据结构。
数组中保存的是”指向对象的引用“,而不是对象本身。
2. 数组的创建
例1
a = 1
b = "str"
#数组不一定都是同一类型 c = [a, b, 3 , "abcdef" ] #=> [1, "str", 3, "abcdef"]
#数组可以嵌套使用 d = [a, c, [ 1 , 2 , 3 ]] #=> [1,[1, "str", 3, "abcdef"], [1, 2, 3]]
|
3. 数组的索引
数组的各个元素按顺序被赋予了从0开始的编号,可使用这些编号和索引运算符[]对访问对象进行操作。
例2
p c[ 0 ]
p c[ 1 ]
p c[ 2 ]
p c[ 3 ]
#如果访问的索引值指向的元素不存在,则返回nil<br>p c[4] p d[ 2 ]
#输出结果 #1 #"str" #3 #"abcdef" #nil #[1, 2, 3] |
负索引
负索引的存在,在Ruby中非常具有代表性。
Ruby中的数组对象的索引值是负数,是从末尾开始反向的编号所表示的元素。
数组的最后一个元素的编号是-1,在它前面的一个元素编号则是-2。
例3
p c[- 1 ]
p c[- 2 ]
#比最前面的元素还要前面,在数组范围之外 p c[- 5 ]
#输出结果 #abcdef #3 #nil |
带有长度的索引
例4
p c[ 1 , 2 ]
p c[ 1 , 3 ]
p c[ 1 , 4 ]
#利用负索引进行访问倒数两个索引值指向的元素<br>p c[-2,2] #对范围外进行访问<br>p c[4,2] #输出结果 #["str", 3] #["str", 3, "abcdef"] #["str", 3, "abcdef"] #[3, "abcdef"] #[] |
表示范围的索引
..表示包含末端的范围
...表示不包含末端的范围
例5
#包含末端的范围 p c[ 0 .. 1 ]
#不包含末端的范围 p c[ 0 ... 1 ]
p c[- 2 ..- 1 ]
#负索引组合,-2表示倒数编号,3表示正数编号 p c[- 2 .. 3 ]
p c[- 2 ... 3 ]
p c[ 4 .. 5 ]
#输出结果 [ 1 , "str" ]
[ 1 ]
[ 3 , "abcdef" ]
[ 3 , "abcdef" ]
[ 3 ]
[] |
索引赋值
使用索引值可以对数组的内容进行替换。
例6
a = [ 1 , 2 ]
p a a[ 0 ] = 3
p a #能够对超过数组长度的位置进行赋值,此时数组会被自动延长,空白索引部分用nil填充 a[ 4 ] = "4"
p a a[ 0 , 3 ] = 'a' , 'b' , 'c'
p a #当指定的元素个数比原数组的元素个数多时,数组会被加长并代入 a[ 0 , 3 ] = 'a' , 'b' , 'c' , 'd'
p a a[ 1 .. 2 ] = 1 , 2
p a a[ 0 , 2 ] = "?"
p a a[ 0 .. 2 ] = "A"
p a a[- 1 ] = "Z"
p a #输出结果 #[1, 2] #[3, 2] #[3, 2, nil, nil, "4"] #["a", "b", "c", nil, "4"] #["a", "b", "c", "d", nil, "4"] #["a", 1, 2, "d", nil, "4"] #["?", 2, "d", nil, "4"] #["A", nil, "4"] #["A", nil, "Z"] |
4. 数组的比较
例7
array1 = [ 1 , 2 , "str" ]
array2 = [ 1 , 2 , "str" ]
p array1 === array2 #=>true
array = [ "str" , 1 , 2 ]
p array === [ 1 , 2 , "str" , "extra" ] #=>false
|
5. 数组的各种各样的方法
例8
array = [ "a" , "b" , "c" ]
#输出数组的长度 p array.length #输出数组的元素个数(即长度) p array.size #array的元素copy p array *= 2
#是否包含c p array.include? "c"
#对数组进行排序,生成新的数组,并不改变原来的array数组 p array.sort p array #消除重复元素,并不改变原来的array数组 p array.uniq p array #消除重复元素,并更新原来的array数组 array.uniq! p array #输出结果<br>#3 #3 #["a", "b", "c", "a", "b", "c"] #true #["a", "a", "b", "b", "c", "c"] #["a", "b", "c", "a", "b", "c"] #["a", "b", "c"] #["a", "b", "c", "a", "b", "c"] #["a", "b", "c"] |
6. 带有代码块的方法和迭代
对带有代码块的方法的调用进行编程时可以用do ... end 与 花括号{}。 do ... end 和花括号{}的区别仅仅在于结合强度而已。
数组对象拥有很多带有代码块的方法,其中很多事对反复操作的抽象化,成为迭代方法。其中最具代表性的是each。
例9
array = [ "a" , "b" , "c" ]
<strong>array. each do |item|</strong>
print item + ""
end #输出结果 #abc |
7. 带有序数的反复操作
each_with_index是each的一种变体,能够同时获取数组元素和其索引值
例10
array = [ "a" , "b" , "c" ]
array.each_with_index do |item, index|
p [item, index]
end #输出结果 #["a", 0] #["b", 1] #["c", 2] |
映射(Map)
例11-1
acids = [ "Adenin" , "Thymine" , "Guanine" , "Cytosine" ]
sign = acids.map{|acid| acid[ 0 , 1 ]}
p sign #输出结果 [ "A" , "T" , "G" , "C" ]
|
例11-2
acids = [ "Adenin" , "Thymine" , "Guanine" , "Cytosine" ]
#对acids内的元素分别进行小写转为大写,a为临时变量 sign = acids.map{|a| a.upcase} p sign #输出结果 #["ADENIN", "THYMINE", "GUANINE", "CYTOSINE"] |
8. 排序
例12
array = [ "73" , "2" , "5" , "1999" , "53" ]
#按照默认的字符串排序 p array.sort #转化为数值后排序 p array.sort{|x,y| x.to_i <=> y.to_i} #输出结果 #["1999", "2", "5", "53", "73"] #["2", "5", "53", "73", "1999"] |
9. 选择
将代码块中的返回值为真的元素取出,组成新的数组并返回
例:students.select{|person| person.grade == 3}
相关推荐
总之,无论你是对编程感兴趣的新手,还是想扩展技能树的开发者,这份“Ruby入门教程中文PDF 附实例”都将是你宝贵的参考资料。通过学习,你不仅可以掌握Ruby的基础知识,还能体验到编程的乐趣和效率。
从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出以下详细的IT知识点,主要聚焦于使用Ruby语言对Excel文件进行操作。 ### 使用Ruby操作Excel的基础知识点 #### 1. 引入win32ole库 在Ruby中操作Excel,...
数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据;这和JAVA不同,在JAVA中,数组是存储同一类型数据的结构。 1. 在Ruby中如何定义数组呢? 使用[ ]来框住元素,而元素之间则使用”,”...
这本书“Ruby入门到精通”显然旨在引导初学者逐步掌握Ruby语言。以下是一些关键知识点,它们可能是书中涉及的内容: 1. **基础语法**:包括变量(本地、实例、类和全局变量)、常量、符号、字符串、数字、数组和...
在Ruby编程语言中,数组是一种非常重要的数据结构,用于存储一组有序的元素。本文将详细介绍Ruby中创建数组的几种方法,以及如何访问和操作数组的元素。 首先,创建一个空数组是通过`Array.new`方法实现的。例如,`...
Ruby的数组(arrays)和散列表(hashes)是被索引的收集(indexed collections). 两者都存储对象的集合,通过键(key)来访问。数组的键是整数。而散列表支持以任何对象作为它的键。数组和散列表会按需调整大小来...
在Ruby中,数组是一种非常重要的数据结构,用于存储一系列有序的元素,这些元素可以是任意类型,包括整数、浮点数、字符串、布尔值甚至是其他对象。在Ruby数组中,元素可以通过索引来访问和操作,索引通常从0开始。 ...
### Ruby 数组详解 #### 一、Ruby 语言概述 Ruby 是一种动态、面向对象的高级编程语言,以其简洁明了的语法而闻名。它强调程序员的生产力与代码的可读性,被誉为“程序员最好的朋友”。Ruby 具备强大的元编程能力,...
Ruby是一种面向对象的、动态...通过阅读《Ruby入门书籍》和相关文档,你将能够掌握Ruby的基础和进阶知识,理解其编程哲学,并能开始编写自己的Ruby程序。记得实践是检验理解的最好方式,边学边练,不断探索Ruby的魅力。
在二十分钟的Ruby入门教程中,我们将快速浏览Ruby的基础知识,包括语法、数据类型、控制结构以及简单的类定义。 首先,让我们从Ruby的基本语法开始。Ruby的注释以`#`字符开始,一直持续到行尾。例如: ```ruby # 这...
Ruby入门级实例
ruby数组处理大全 如函数名称 说明 示例 &数组与,返回两数组的交集 [1,2] & [2,3] =>[2] *复制数组n次 [1,2]*2 => [1,2,1,2] +返回两数组的并集,但不排除重复元素 [1,2]+[2,3] =>[1,2,2,3] 追加元素,但不...
Ruby入门到精通,Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel...
Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门...
标题中的“Ruby相关入门教程网址”表明这是一份关于学习Ruby编程语言的资源,而描述中的“博文链接:https://musicbox95351.iteye.com/blog/1797113”提示我们可以从这个链接找到更多关于Ruby的入门教程。...
Skillcrush的"Ruby挑战——开始"可能是一系列适合初学者的编程练习,旨在帮助用户熟悉Ruby的基础概念和核心特性。在这个挑战中,你将有机会实践Ruby编程,了解其基本结构、变量、数据类型以及控制流程。 1. **Ruby...
ruby示例代码,ruby入门程序
1. **Ruby基础语法**:了解Ruby的变量(局部变量、实例变量、类变量和全局变量)、常量、数据类型(包括字符串、数字、布尔值、数组、哈希等)以及控制结构(如条件语句、循环和范围表达式)。 2. **面向对象编程**...