`
jy503160
  • 浏览: 20012 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Ruby入门——数组

    博客分类:
  • ruby
 
阅读更多

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入门教程中文PDF 附实例”都将是你宝贵的参考资料。通过学习,你不仅可以掌握Ruby的基础知识,还能体验到编程的乐趣和效率。

    ruby代码分享——excel应用

    从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出以下详细的IT知识点,主要聚焦于使用Ruby语言对Excel文件进行操作。 ### 使用Ruby操作Excel的基础知识点 #### 1. 引入win32ole库 在Ruby中操作Excel,...

    Ruby简明教程之数组和Hash介绍

    数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据;这和JAVA不同,在JAVA中,数组是存储同一类型数据的结构。 1. 在Ruby中如何定义数组呢? 使用[ ]来框住元素,而元素之间则使用”,”...

    ruby入门到精通

    这本书“Ruby入门到精通”显然旨在引导初学者逐步掌握Ruby语言。以下是一些关键知识点,它们可能是书中涉及的内容: 1. **基础语法**:包括变量(本地、实例、类和全局变量)、常量、符号、字符串、数字、数组和...

    Ruby创建数组方法总结

    在Ruby编程语言中,数组是一种非常重要的数据结构,用于存储一组有序的元素。本文将详细介绍Ruby中创建数组的几种方法,以及如何访问和操作数组的元素。 首先,创建一个空数组是通过`Array.new`方法实现的。例如,`...

    Ruby中的数组和散列表的使用详解

    Ruby的数组(arrays)和散列表(hashes)是被索引的收集(indexed collections). 两者都存储对象的集合,通过键(key)来访问。数组的键是整数。而散列表支持以任何对象作为它的键。数组和散列表会按需调整大小来...

    ruby数组

    在Ruby中,数组是一种非常重要的数据结构,用于存储一系列有序的元素,这些元素可以是任意类型,包括整数、浮点数、字符串、布尔值甚至是其他对象。在Ruby数组中,元素可以通过索引来访问和操作,索引通常从0开始。 ...

    10Ruby 数组.docx

    ### Ruby 数组详解 #### 一、Ruby 语言概述 Ruby 是一种动态、面向对象的高级编程语言,以其简洁明了的语法而闻名。它强调程序员的生产力与代码的可读性,被誉为“程序员最好的朋友”。Ruby 具备强大的元编程能力,...

    ruby入门书籍

    Ruby是一种面向对象的、动态...通过阅读《Ruby入门书籍》和相关文档,你将能够掌握Ruby的基础和进阶知识,理解其编程哲学,并能开始编写自己的Ruby程序。记得实践是检验理解的最好方式,边学边练,不断探索Ruby的魅力。

    二十分钟Ruby入门教程

    在二十分钟的Ruby入门教程中,我们将快速浏览Ruby的基础知识,包括语法、数据类型、控制结构以及简单的类定义。 首先,让我们从Ruby的基本语法开始。Ruby的注释以`#`字符开始,一直持续到行尾。例如: ```ruby # 这...

    Ruby Ruby入门级实例

    Ruby入门级实例

    ruby 数组处理大全.doc

    ruby数组处理大全 如函数名称 说明 示例 &数组与,返回两数组的交集 [1,2] & [2,3] =&gt;[2] *复制数组n次 [1,2]*2 =&gt; [1,2,1,2] +返回两数组的并集,但不排除重复元素 [1,2]+[2,3] =&gt;[1,2,2,3] 追加元素,但不...

    Ruby入门到精通

    Ruby入门到精通,Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel...

    Ruby编程语言入门与实践 .pptx

    Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门...

    Ruby相关入门教程网址

    标题中的“Ruby相关入门教程网址”表明这是一份关于学习Ruby编程语言的资源,而描述中的“博文链接:https://musicbox95351.iteye.com/blog/1797113”提示我们可以从这个链接找到更多关于Ruby的入门教程。...

    ruby-challenges:来自 Skillcrush 的 Ruby 挑战——“开始”

    Skillcrush的"Ruby挑战——开始"可能是一系列适合初学者的编程练习,旨在帮助用户熟悉Ruby的基础概念和核心特性。在这个挑战中,你将有机会实践Ruby编程,了解其基本结构、变量、数据类型以及控制流程。 1. **Ruby...

    ruby示例代码,ruby入门程序

    ruby示例代码,ruby入门程序

    ruby入门中文合集

    1. **Ruby基础语法**:了解Ruby的变量(局部变量、实例变量、类变量和全局变量)、常量、数据类型(包括字符串、数字、布尔值、数组、哈希等)以及控制结构(如条件语句、循环和范围表达式)。 2. **面向对象编程**...

Global site tag (gtag.js) - Google Analytics