今天学习的是数组和Hash,数组在很多编程语言中都能常常用到。

数组:

数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据;这和JAVA不同,在JAVA中,数组是存储同一类型数据的结构。

1. 在Ruby中如何定义数组呢?

使用[ ]来框住元素,而元素之间则使用","间隔。如下,

name = ["Windy", "Cindy", "Amee", "Tom"]

name = []  #声明了一个空数组,未定义的数组

name = [, "song", , "小林"]

2. 如何取得数组元素呢?

在Ruby通过 数组名[index] 来获取数组元素,这和JAVA是一样的。而且index序号是从0开始的。例如,在上面的例子中,想要取出"Windy"这个元素,则要使用name[0],而 p name[3] # -> "Tom"。

3. 如何将对象放入数组中呢?

可以直接通过给数组元素赋值

name = ["Alice", "John", "Bob", "Jessie"]
name[1] = "Jack" p name #-> ["Alice", "Jack", "Bob", "Jessie"] name[4] = "Windy"
p name #-> ["Alice", "Jack", "Bob", "Jessie", "Windy"]

4. 如何取得数组的大小?

使用size方法可以返回数组大小。例如,上面实例中第一次定义的数组name, p name.size  # -> 4  在JAVA中,数组是有属性length来获取数组大小的。

5. 如何逐项处理数组中的内容?

可以使用数组的each方法来对数组中的内容逐项处理,语法如下:

=begin
语法:
数组。each { |变量|
要执行的动作
}
=end name = [2, 5, ,6, 9]
name.each{ |number|
prints number+1, "\n"
} # -> 3
#
#
#

这和JAVA中的for each循环类似。

HASH:

HASH是经常使用的容器之一,在Ruby中,其可以使用字符串等数据为key来存储对象,和JAVA中的Map容器很类似。

1. 如何定义HASH呢?

使用{ }将HASH对象都框住,而每个元素以key=>value的形式出现,而元素之间通过","间隔。

name_list = {"" => "Windy", "" => "Cindy", "" => "Terry"}

2. 如何取得HASH中的元素呢?

使用 HASH名称[key值] 来获取HASH元素,例如,

p name_list[""]  # -> "Windy"

3. 如何将对象储存到HASH中?

和上面说到的数组类似,直接将值赋给HASH元素,例如: name_list["02"] = "Amy"

由于HASH没有固定的顺序,所以不能按照存储的顺序来取出数据,这和JAVA中的Hash Table很类似。

4. 如何逐项处理HASH内容

与数组类似,其也是通过它的each方法来逐项处理其元素

=begin
语法
HASH.each { |key变量,值变量|
想要执行的动作
}
=end name_list.each{ |key, value|
print key, " = ", value, "\n"
} # -> "01" = "Windy"
# "02" = "Cindy"
# "03" = "Terry"

Ruby还有重定向(redirect)的功能,就是把执行结果文件再存储到另外的文件中,使用">文件名"来实现,例如,ruby name_list.rb > name_list.txt

正则表达式:

在其他编程语言中,也都有正则表达式。在Ruby中,使用如下语法:/样式/ =~ 想要匹配的字符串

如果匹配成功,则返回匹配成功的位置,位置是从0开始计算的;如果匹配不成功,则返回nil。若/样式/i,即多加了一个i,则匹配时就不区分大小写了。

p /Ruby/ =~ "Another Ruby Hacker"   #-> 8
p /Another Ruby Hacker/ =~ "Ruby" #-> nil p /Ruby/ =~ "ruby" #-> nil
p /Ruby/i =~ "ruby" #-> 0

样式也可以通过Regexp类的new方法来构造,例如,pattern = Regexp.new(参数)

Ruby自学笔记(四)— 数组,Hash,正则表达式简介的更多相关文章

  1. Ruby自学笔记(五)— 条件判断

    条件判断,在编程语言中都存在,而Ruby中的条件判断和Java中类似,当然还是存在些许差别 Ruby中条件判断的条件: 1) 可以使用 ==,<,>等比较运算来作为条件,比较运算可以返回t ...

  2. Ruby自学笔记(三)— 方法Method

    Ruby做为面向对象语言,肯定要对对象进行相关的操作,这时候就涉及到方法了. 调用方法 - 对象.方法名(实参1,实参2,...,实参n) 方法的分类: 1. 实例方法:顾名思义,就是由实例来调用的方 ...

  3. Ruby自学笔记(二)— Ruby的一些基础知识

    Ruby安装好之后,我们就可以来实践Ruby语言了. 以下是一些学习到的简单基础知识: 1. 如何执行Ruby文件? 我们编写的Ruby文件是以rb为后缀名的,例如:XXX.rb.当要执行ruby文件 ...

  4. Ruby自学笔记(一)— 基本概况

    之前一直想要多看看RESTful Service相关的东西,找到一本相关的书,但是里面的代码都是用Ruby写的,虽然知道编程语言都是类似的,但是看到一些陌生的语法,还是有些摸不着头脑,所以最近终于下定 ...

  5. JS学习笔记 (四) 数组进阶

    1.基本知识 1.数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中的位置称为索引,以数字表示,以0开始. 2.数组是无类型的.数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的 ...

  6. Ruby自学笔记(六)— 循环

    循环结构在编程语言中是不可或缺的,所以Ruby中的循环也有其自定义的规则. 而我们关注循环结构,要知道两个因素:1) 循环的条件:2) 循环执行的内容 Ruby有一些方式来实现循环结构体: 1. ti ...

  7. webpack4 自学笔记四(style-loader)

    全部的代码及笔记都可以在我的github上查看, 欢迎star:https://github.com/Jasonwang911/webpackStudyInit/tree/master/css 引入- ...

  8. spring boot 自学笔记(四) Redis集成—Jedis

    上一篇笔记Reddis集成,操作Redis使用的是RedisTemplate,但实际中还是有一大部分人习惯使用JedisPool和Jedis来操作Redis, 下面使用Jedis集成示例. 修改Red ...

  9. Objective-C 学习笔记(四) 数组

    Objective-C 数组作为函数参数传递 如果想在一个函数作为参数,通过一维数组,就必须声明函数形式参数 方式一    指针作为形式参数 - (void) myFunction(int *) pa ...

随机推荐

  1. MySQL查询过程中出现lost connection to mysql server during query 的解决办法

    window7 64位系统,MySQL5.7 问题:在使用shell进行数据表更新操作的过程,输入以下查询语句: ,; 被查询的表记录数达到500W条,在查询过程中出现如题目所示的问题,提示" ...

  2. textarea文本域

    textarea中换行问题 一旦用nl2br函数处理会多个\n导致十分难看 也无法形成文本框默认效果 前台的html如果用<br/>处理也会给后台的编辑造成困难 所以在编辑的时候这样处理 ...

  3. Linux命令之hwclock - 查询和设置硬件时钟

    常用参数 -r, --show         读取并打印硬件时钟(read hardware clock and print result ) -s, --hctosys      将硬件时钟同步到 ...

  4. 一个很cool的C#的高性能数学库

    High Performance Math Library for C# and .NET是一个很cool的C#的高性能数学库,3D效果也很不错,下图是首页上的一个例子.他也有一个交互的网页,你可以自 ...

  5. systemtap分析软raid io拆分问题

    http://www.sysnote.org/2014/05/01/systemtap-analysis-mdraid-io/

  6. warning:This application is modifying the autolayout engine from a background thread

    警告提示:This application is modifying the autolayout engine from a background thread, which can lead to ...

  7. 10.29 afternoon

    [问题描述] 祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干个彩色珠子,其中任意三个相邻的珠子不会完全同色.此后,你可以发射珠子到轨道上并加入原有序列中.一旦有三个或更多同色的珠子 ...

  8. WisDom.Net 框架设计(二) 服务总线

    WisDom.Net 框架设计--服务总线 1.Soa 简介     soa 就是面向服务的体系结构 是一个组件模型,不同的组件之间通过定义良好的接口联系起来.就像盖房子一块砖头一块砖头的砌墙,一片一 ...

  9. ORACLE解锁数据库用户

    the account is locked解决办法: 1.进入sqlplus sqlplus "/as sysdba" 2.解锁: alter user hpmng account ...

  10. 那些年,我们一起学WCF--(8)Single实例行为

    Single实例行为,类似于单件设计模式,所有可以客户端共享一个服务实例,这个服务实例是一个全局变量,该实例第一次被调用的时候初始化,到服务器关闭的时候停止. 设置服务为Single实例行为,只要设置 ...