Ruby 哈希是键-值对的集合。 它类似于数组,与数组不同,哈希可以将任意对象作为索引。 数组只能具有整数,哈希值按插入相应键的顺序枚举其值。 哈希有时称为关联数组。
哈希是功能强大的集合。 他们有许多方法可供程序员用来完成工作。
Ruby 哈希创建
可以通过两种基本方式创建哈希:使用new
关键字或哈希文字。
第一个脚本创建一个哈希并将两个键值对添加到哈希对象中。
创建一个哈希对象。
我们将两对值添加到哈希中。 数字 1、2 是哈希的键。 键放在方括号内。 名称是属于键的值。
puts
方法将哈希的字符串表示形式打印到控制台。 它也是哈希的字符串文字。
从输出中,我们可以看到名称哈希的字面表示。 散列以大括号为界。 键和值与=>
字符配对。
store
方法可用于使用某些值初始化哈希。 可以使用它代替方括号。
我们有一个类似的脚本。 这次我们使用store
方法。 该方法将给定键与给定值相关联,并将该对存储在哈希中。
store
方法的第一个参数是键,第二个参数是值。
在第三个脚本中,我们使用哈希文字表示法创建哈希。 值用大括号括起来。 键值对与=>
字符相关联。
我们创建具有 5 对的域哈希。 这次键和值都是字符串类型。
这是哈希文字表示法。 键值对放在大括号之间。 这些项目用逗号分隔。 使用=>
字符组合将键与值关联。
在这里,我们打印与“ de”键关联的域名名称。
这是代码示例的输出。
Ruby 哈希基本操作
在本节中,我们介绍了一些用于 Ruby 哈希基础知识的方法。
在上面的 Ruby 脚本中,我们创建具有五个值的哈希。 我们介绍了三种哈希方法。
size
方法返回哈希的大小。 它是length
方法的同义词。
keys
方法返回哈希的所有键。 values
方法以类似的方式返回哈希的所有值。 返回的数据为数组形式。 为了获得更可读的输出,我们还对返回的数组调用inspect
方法。
我们看到示例的输出。 请注意,最后两个方法的输出是两个数组。
本节的第二个示例介绍了三种不同的哈希方法。
Ruby 脚本创建一个名称哈希。 它在对象上调用三种哈希方法。
我们通过调用dup
方法来创建哈希的副本。 该方法由父对象的哈希继承。
eql?
方法比较两个哈希对象。 在我们的例子中,哈希值是相等的,并且该行打印正确。
empty?
方法检查哈希是否为空。 该行打印 false,因为 names1 哈希包含五个项目。
clear
方法从哈希中删除所有项目。 连续调用empty?
方法将返回 true。
这是示例输出。
我们有一些方法可以确定哈希中是否存在键或值。
我们用四个对创建一个域哈希。 键是符号。 通常将符号用作键,因为它们更有效。
在这里,我们有四种确定键是否在哈希中的方法。 他们都做同样的事。 它们是同义词。
这两种方法检查两个字符串是否在哈希中。
这是示例的输出。
在本节的最后一个示例中,我们将从散列中读取值。
Ruby 脚本提供了三种用于读取哈希值的哈希方法。
fetch
方法读取给定键的值。
方括号可用于获取值。 在我们的例子中,该行将“ topaz”打印到控制台。
values_at
方法可用于一步获得多个值。 该方法返回给定键的值的数组。
Ruby 哈希迭代
有几种方法可用于遍历 Ruby 哈希。
在上面的示例中,我们介绍了四种方法。 我们使用它们显示哈希的所有键,值以及键和值。
each
方法为哈希中的每个键调用给定的块,并将键值对作为参数传递。
我们使用each_key
方法循环遍历哈希的所有键。 它们被打印到控制台。
each_value
可用于循环遍历哈希值。
each_pair
方法是each
方法的同义词。 我们遍历石头哈希的键和值。
输出显示石头哈希的键和值,键,值。
Ruby 删除哈希中的对
在以下示例中,我们将关注从散列中删除对的方法。 这包括删除单个对的方法以及可以一步删除多个键值的方法。
在脚本中,我们有两种方法:delete
和shift
。 delete
方法删除并返回指定键的值。 shift
方法从哈希中删除第一对。 它还以数组形式返回删除的对。
在这里,我们删除一对 4 = >“ Julia”。
该代码行删除了第一对,即 1 = >“ Jane”。
在输出中,我们可以看到剩下的哈希对。
reject
和delete_if
方法可以从哈希中删除多对。 这些方法删除对块中给定条件返回 true 的对。 两种方法之间有重要区别。 reject
方法适用于哈希的副本,而delete_if
方法适用于原始哈希。
该示例使用前面提到的方法删除多个对。
reject
方法删除适合块中正则表达式的所有值。 返回修改后的哈希,并且原始哈希不会更改。
该行的输出确认原始哈希是完整的。
在这种情况下,我们将删除所有键小于或等于 3 的对。该方法将修改原始哈希。
示例的输出。
Ruby 在哈希中添加元素
Ruby 的 merge 和 update 方法将(键,值)对添加到哈希。 Ruby 具有用于添加哈希的方法。
在 Ruby 脚本中,我们创建两个哈希。 然后我们在它们上应用merge
和update
方法。
names1 和 names2 哈希组合在一起。 结果分配给名称哈希。 我们打印新创建的哈希。
如我们所见,最终的哈希包含names1
和names2
哈希对。
Ruby 哈希merge
和merge!
方法
在最后一节中,我们回顾了一个常见的 Ruby 习惯用法。 几种 Ruby 方法的对应方法都以感叹号结尾。 此标记没有语法意义,表示方法修改了调用该方法的对象。
我们将演示merge
和merge!
方法的区别。
merge
不会修改names1
哈希。 它可以在其副本上工作。
merge!
方法适用于原始哈希。 names1
哈希已更改。
这是merge2.rb
程序的输出。