Ruby 的基本数据对象不仅只有字符串和数值这两种,大部分的 Ruby 程序中涉及的数据对象的结构都要复杂得多。

数组和散列,正则表达式

像数组和散列这样保存对象的对象,我们称为容器。

数组

Ruby 中的数组是动态调整的

数组中的元素不必为相同类型,数组的大小获取可通过 size 来获取

names.size

遍历数组中元素 each 迭代器

散列

有点像字典,整键值对。在 Ruby 中,一般以字符串或者符号作为键来保存对应的对象

符号与字符串很相似,可以理解为轻量级的字符串,一般作为名称标签使用,要创建符号,只需要在标识符的开头加上 : 就可以了。

字符串与符号之间可以相互转化,字符串使用 to_sym 方法转成符号,对符号使用 to_s 转成字符串。

符号能实现的功能,大部分字符串也能实现,但在像散列的键这样只是单纯判断 “是否相等” 的处理中,使用符号会比字符串更加有效率。

创建散列用 {},散列用 “键 => 对象” 这种格式来定义获取对象时所需的键 key,以及键相对应的对象,通常使用符号、字符串、数值作为散列的键。

song = { :title => "Paranoid Android", :artist => "Radiohead"}
# 当用符号当作键时可简写为
song1 = { title: "Paranoid Android", artist: "Radiohead" }

跟数组操作差不多。

散列的循环

散列.each do |键变量,值变量|
  希望循环的处理
end

正则

/模式/ =~ 希望匹配的字符串

加 i 表示不区分大小写