Ruby基础教程(Day2)—— 数组和散列初始

二、数组和散列初始

像数组、散列这样保存对象的对象,我们称为容器
  1. 数组
  • 数组是一个按顺序保存多个对象的对象,它是基本的容器之一,我们一般称为数组对象或者Array对象

  • 数组的创建:要创建数组,需要把各数组的元素用逗号隔开,在用[ ]把它们括起来
    names=["小林","花湖"]

  • 在数组对象还未确定的情况下,可以用[]表示一个空数组对象

  • 其他方法之后介绍

  • 从数组中抽取对象:保存在数组中的每个对象都各自有一个表示其位置的编号,称为索引(index),利用索引,我们可以进行把对象保存到数组、从数组中抽取对象等操作

  • 数组名【索引】
    在这里插入图片描述

  • 将对象保存在数组中

    • 我们可以将新的兑现保存在已经创建的数组中
    • 将数组中的某个元素替换为其他对象时,可以使用如下方法
      数组名【索引】=希望保存的对象
      在这里插入图片描述
  • 在保存对象时,如果指定了数组中不存在的索引值,则数组的大小会随之改变。Ruby中数组的大小是按实际情况自动调整的。
    在这里插入图片描述

  • 数组的元素

    • 任何对象都可以作为数组元素保存到数组中。例如,除了可以创建字符串数组,还可以创建数值数组
      num=[2,3,5,6]
    • Ruby 数组还可以保存多种不同的对象
      mixed=[1,"你",2,"好",3]
  • 数组的大小

    • 我们可以用size方法获知数组的大小。array.size
      在这里插入图片描述
  • 数组的循环

    • 遍历所有数组元素each
    	数组 .each do | 变量 |
    	 	希望循环的处理
    	end
    
    • each 后面在do~end之间的部分称为块。因此,each这样的方法也可以称为带块的方法。我们可以把多个需要处理的内容合并后写到块里面
    • 块的开始部分为变量。each方法会把数组元素逐个取出来,赋值给变量指定的变量,然后循环执行块中的方法
      在这里插入图片描述
  1. 散列
  • 散列也是一个程序中常用到的容器。在散列中,一般是以字符串或者符号作为键,来保存对应的对象。
  • 在Ruby中,符号与字符串对象很相似,符号也是对象,一般作为名称标签使用,表示方法等的对象的名称。
  • 要创建符号,只需在标识符的开头加上:就可以了
  • 可以将符号简单理解为轻量级的字符串
  • 符号实现的功能,大部分字符串也能实现。但在像散列的键这样只是单纯判断是否相等的处理中,使用符号会比字符串更有效率,因此在实际编程中我们也会时常用到符号
  • 符号与字符串可以相互转换。对符号使用to_s方法,则可以得到对应的字符串。反之,对字符串使用to_sym方法,则可以得到对应的符号。
    在这里插入图片描述
  • 散列的创建
    • 与创建数组方法差不多,使用{} 把创建的内容括起来
    • 散列用“键=>对象”这种格式来定义获取对象时所需的键(key),以及键相对应的对象(object)。通常我们会使用符号、字符串、数值作为散列的键。
    • 我们常常用符号当作键使用。
      在这里插入图片描述
  • 散列的使用
    • 从散列取出对象,将对象保存到散列等的操作方法也都和数组非常类似。
      散列名 [键]
    • 保存对象的方法
      散列名 [键] =希望保存的对象
      在这里插入图片描述
  • 散列的循环
    • 使用each方法可以遍历散列中的所有元素,逐个取出其元素的键和对应的值。循环数组时是按索引顺序遍历元素,循环散列时是按照键值组合遍历元素
    	散列的 each 语法如下所示。
     		散列 .each do | 键变量 , 值变量 | 希望循环的处理
    	 end
    
    在这里插入图片描述
  • 正则表达式
    • 在Ruby中处理字符串时,我们经常会用到正则表达式
    • 将字符串与模式匹配
    • 使用模式分割字符串
    • 模式与匹配
      • 判断字符串是否适用于某模式的过程称为匹配,如果字符串适用于该模式则称为匹配成功
      • 像这样的字符串模式如果用编程语言来表示,就是所谓的正则表达式
      • 创建正则表达式对象的语法是:/模式/
      • 匹配“Ruby”这个字符串的正则表达式为:/Ruby/
      • 匹配字母、数字时,按字符串原样写就可以了。
      • 匹配正则表达式与字符串的方法是:/ 模式 / =~ 希望匹配的字符串
      • 当模式中只使用英文、数字、汉字时,若希望匹配的字符串中包含模式中的字符串,则视为匹配成功,不包含则视为匹配失败。若匹配成功则返回匹配部分的位置。字符的位置和数组的索引一样,是从0开始计数的。也就是说,字符串的首个字符位置为0。反之,若匹配失败,则返回nil。
        在这里插入图片描述
      • 正则表达式右边的 / 后面加上 i 表示不区分大小写匹配
        在这里插入图片描述
    • nil 是一个特殊的值,表示对象不存在。像在正则表达式中表示无法匹配成功一样,方法不能返回有意义的值时就会返回nil。另外,从数组或散列中获取对象时,若指定不存在的索引或者键,则得到的返回值也是nil
      在这里插入图片描述
    • if语句和while语句在判断条件时,如果碰到falsenil,则会认为是“假”,除此以外的都认为是“真”。因此,除了可以使用返回true或者false的方法,也可以使用“返回某个值”或者返回“nil”的方法作为判断条件表达式。
    • 下面例子中只会输出数组中包含字符“花”的字符串
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值