"value" 这样的键值对集合。哈希类似于一个数组,只不过它的索引不局...">
美文网首页
Ruby 哈希(Hash)

Ruby 哈希(Hash)

作者: Colleen_oh | 来源:发表于2019-11-12 17:42 被阅读0次

哈希(Hash)是类似 "key" => "value" 这样的键值对集合。哈希类似于一个数组,只不过它的索引不局限于使用数字。

Hash 的索引(或者叫"键")几乎可以是任何对象。

Hash 虽然和数组类似,但却有一个很重要的区别:Hash 的元素没有特定的顺序。 如果顺序很重要的话就要使用数组了。

创建哈希

与数组一样,有各种不同的方式来创建哈希。您可以通过 new 类方法创建一个空的哈希:

months = Hash.new

您也可以使用 new 创建带有默认值的哈希,不带默认值的哈希是 nil。
当您访问带有默认值的哈希中的任意键时,如果键或值不存在,访问哈希将返回默认值:
让我们来看个例子:

#!/usr/bin/ruby
 
months = Hash.new( "month" )
 
puts "#{months[0]}"
puts "#{months[72]}"

结果如下:

month
month

让我们来看看第二个例子:

#!/usr/bin/ruby
 
H = Hash["a" => 100, "b" => 200]
 
puts "#{H['a']}"
puts "#{H['b']}"

结果如下:

100
200

您可以使用任何的 Ruby 对象作为键或值,甚至可以使用数组,如下实例所示:

[1,"jan"] => "January"

哈希内置方法

如果需要调用 Hash 方法,需要先实例化一个 Hash 对象。下面是创建 Hash 对象实例的方式:

Hash[[key =>|, value]* ] or
 
Hash.new [or] Hash.new(obj) [or]
 
Hash.new { |hash, key| block }

这将返回一个使用给定对象进行填充的新的哈希。现在,使用创建的对象,我们可以调用任意可用的方法。例如:

#!/usr/bin/ruby
 
$, = ", "
months = Hash.new( "month" )
 
months = {"1" => "January", "2" => "February"}
 
keys = months.keys
 
puts "#{keys}"

以上实例运行输出结果为:

["1", "2"]

参考:https://www.runoob.com/ruby/ruby-hash.html

相关文章

  • Ruby 哈希(Hash)

    哈希(Hash)是类似 "key" => "value" 这样的键值对集合。哈希类似于一个数组,只不过它的索引不局...

  • 计算文件哈希值

    什么是哈希值? 哈希值(hash values)是使用哈希函数(hash function)计算得到的值。哈希函数...

  • 哈希算法

    哈希算法 什么是hash函数?常见的hash算法hashlib的用法hash算法的用途 什么是hash函数? 哈希...

  • ruby 数据类型

    1. Ruby 字符串(String) 2. Ruby 数组 3. Ruby 哈希 哈希的内置方法 4. Ruby...

  • ruby的数据结构--哈希(Hash)

    1、哈希(Hash) 哈希也是存储对象的一个集合,哈希里面的元素是以"key" => “value”(键值对)这样...

  • Ruby 集合家族之哈希(Hash)

    说完数组,就知道下一个肯定是哈希,在 Objective-C 里的体现是字典(NSDictionary)。为什么这...

  • Perl 得到重复行的次数

    命令描述chomp($_)过滤断行符号$hash{...}哈希表say打印keys %hash排序哈希表forea...

  • 哈希表

    映射(Map) 和 集合(Set) 哈希表(HashTable)、哈希函数(Hash Function)、哈希碰撞...

  • 哈希-Hash

    将数据通过密码学的运算转变成一段不可知的定长数据,不管加密的数据有多大或多小生成的hash值的长度是固定的...

  • Hash哈希

    基本概念 Hash,一般翻译做“散列”,也有直接音译为“哈希”的。那么哈希函数的是什么样的?大概就是 value ...

网友评论

      本文标题:Ruby 哈希(Hash)

      本文链接:https://www.haomeiwen.com/subject/izpqictx.html