ruby中散列的定义和使用

来源:互联网 发布:论文查重软件免费 编辑:程序博客网 时间:2024/05/16 07:56

1)散列的概念

        散列(hash)也是一个程序里常用到的容器。散列是键值对(key-value pair)的一种数据结构。在 Ruby中,一般是以字符串或者符号(Symbol)作为键,来保存对应的对象。

        Ruby 中,符号(symbol)与字符串对象很相似,符号也是对象,一般作为名称标签来使用,用来表示方法等的对象的名称。创建符号,只需在标识符的开头加上: 就可以了。例如:

sym= :foo # 表示符号“:foo”sym2 =:"foo" # 意思同上

       符号能实现的功能,大部分字符串也能实现。但像散列键这样只是单纯判断“是否相等”的处理中,使用符号会比字符串比较更加有效率,因此在实际编程中我们也会时常用到符号。符号与字符串可以互相任意转换。对符号使用 to_s 方法,则可以得到对应的字符串。反之,对字符串使用 to_sym方法,则可以得到对应的符号。


2)散列的创建

       创建散列的方法与创建数组的差不多,不同的是,不使用 [],而是使用 {}把创建的内容括起来。散列用=>来定义获取对象时所需的键(key),以及键相对应的对象(value)。例如:

address= {:name => "高桥", :pinyin =>"gaoqiao", :postal => "1234567"}

address= {"name" => "高桥", "pinyin" => "gaoqiao","postal" => "1234567"}

将符号当作键来使用时,程序还可以像下面这么写:

address= {name: "高桥", pinyin: "gaoqiao",postal: "1234567"}

3)散列的使用

a)利用散列的键来访问数组中的元素

散列名[键]

b)散列的遍历

使用 each方法,我们可以遍历散列里的所有元素,逐个取出其元素的键和对应的值。循环数组时是按索引顺序遍历元素,循环散列时按照键值组合遍历元素。

散列.each do | 键变量, 值变量 | statementend

c)修改散列的值

散列名[键] = 'xxx'


0 0