在Ruby中创建和使用哈希的教程_ruby专题

哈希(Hash)是类似 "employee" => "salary" 这样的键值对的集合。哈希的索引是通过任何对象类型的任意键来完成的,而不是一个整数索引,其他与数组相似。

通过键或值遍历哈希的顺序看起来是随意的,且通常不是按照插入顺序。如果您尝试通过一个不存在的键访问哈希,则方法会返回 nil。
创建哈希

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

months = Hash.new

您也可以使用 new 创建带有默认值的哈希,不带默认值的哈希是 nil:

months = Hash.new( "month" )

or

months = Hash.new "month"

当您访问带有默认值的哈希中的任意键时,如果键或值不存在,访问哈希将返回默认值:

#!/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}"

这将产生以下结果:

2, 1

下面是公共的哈希方法(假设 hash 是一个 Hash 对象):

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ruby
ruby 哈希、ruby 哈希处理、ruby 哈希表、ruby求哈希长度、创建哈希表,以便于您获取更多的相关知识。

时间: 2024-11-26 16:43:05

在Ruby中创建和使用哈希的教程_ruby专题的相关文章

Ruby中一些基本语法知识点的罗列汇总_ruby专题

 让我们写一个简单的ruby程序.所有Ruby源文件将以扩展名.rb.因此,把下面的源代码在一个test.rb文件. #!/usr/bin/ruby -w puts "Hello, Ruby!"; 在这里,假定您已经安装有Ruby解释器,可以在/usr/bin目录找到.现在尝试运行此程序如下: $ ruby test.rb 这将产生以下结果: Hello, Ruby! 通过以上实例,我们已经看到了一个简单的Ruby程序,现在让我们来看看有关Ruby语法的几个基本概念: Ruby程序中的

Ruby中嵌套对象转换成json的方法_ruby专题

JSON由于其数据结构简单便利,已逐渐成为了互联网上的主流数据交换的数据格式. 在讨论嵌套对象(Nested Object)的JSON转换方法之前,我们先看简单的ruby JSON转换.首先,ruby对象转换为JSON字符串: 复制代码 代码如下: class Obj1     def initialize(var1)         @var1 = var1     end     def to_json(*a)         {             "json_class"

Ruby中的反射(Reflection)应用实例_ruby专题

在Java语言中,提供了发射机制,通过发射机制可以通过字符串构造出这个对象,可以获取对象的所有方法(包括私有方法),可以调用私有方法,可以更改成员变量的值(包括私有的成员变量).Ruby也是面向对象的高级语言,当然也提供了反射机制,今天我们讨论通过类名称构造类对象的功能. 一.通过类名称构造类对象 我们先看普通的构造: 复制代码 代码如下: module ModuleA     #the class name, later we will use it to create the corresp

Ruby中相等性判断的4种方法_ruby专题

很早就知道 ruby 有 4 种相等性判断方法,分别是:"==","===","equal?" 和 "eql?",平常程序中都有使用,但是感觉对其缺乏深入理解,今天读 rails 部分源码的时候拿捏不定其中一个判断的意思,于是趁机深入研究了一番,总算觉得比较清楚了,今天做一下笔记,以作备忘. "==" 最常见的相等性判断 "==" 使用最频繁,它通常用于对象的值相等性(语义相等)判断,在

Windows下Ruby on Rails开发环境安装配置图文教程_ruby专题

本文详细介绍如何在Windows配置Ruby on Rails 开发环境,希望对ROR初学者能有帮助. 一.下载并安装Ruby Windows下安装Ruby最好选择 RubyInstaller(一键安装包). 下载地址: http://rubyforge.org/frs/?group_id=167 . 我们这里下载目前较新的rubyinstaller-1.9.3-p0.exe 一键安装包.这个安装包除了包含ruby本身,还有许多有用的扩展(比如gems)和 帮助文档. 双击安装,安装过程出现如下

Ruby程序中创建和解析XML文件的方法_ruby专题

使用builder创建XML builder安装方法: gem install builder require 'builder' x = Builder::XmlMarkup.new(:target => $stdout, :indent => 1) #":target =>$stdout"参数:指示输出内 容将被写向标准输出控制台 #":indent =>1"参数:XML输出形式将被缩 进一个空格字符x.instruct! :xml, :

Ruby 中一些百分号(%)的用法小结_ruby专题

%Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") 复制代码 代码如下: >> %Q(Joe said: "Frank said: "#{what_frank_said}"")=> "Joe said: "Frank said: "Hello!""" (...)也可用其他非数字字母的符号或成对的符号代替

Ruby和Ruby on Rails中解析JSON格式数据的实例教程_ruby专题

Ruby解析JSON Ruby解析Json例子: json = '["a", "B", "C"]' puts "Unsafe #{unsafe_json (json).inspect}" #输出Unsafe ["a", "B", "C"] Ruby解析Json把上面的json字符串解析成Array.这样的方法并不安全,比如: json = 'puts "Da

Ruby编程中关于中断和返回的用法教程_ruby专题

 return,break,next 这几个关键字的使用都涉及到跳出作用域的问题,而他们的不同 则在于不同的关键字跳出去的目的作用域的不同,因为有代码块则导致有一些地方需要格外注意.return常用方式 通常情况下的return语句和大家理解的意思是相同的. def m1 param if param == 1 return 'returned 1' end 'returned default value' # 根据Ruby语言规范,最后一条执行语句的结果将作为返回值返回,return是可选的