Programming Ruby——数组,哈希表和控制结构

数组和哈希表

Ruby的数组和哈希表是索引集合。两都都是保存对象集合并能通过键来读取。数组的键是数字,但是 哈希表则支持对象作为键。它们都是随着新元素的加入要增长。在访问元素方面,数组效率比较高,但哈 希表更加的灵活。无论是数组还是哈希表,都能保存不同类型的对象;你可以使用一个数组保存数字,字 符串和浮点数,就像你等会将会看到的那样。

你可以使用数组文本来创建和初始化一个新的数组——一个由中括号包围的元素集合。对于一个数组 ,你能通过使用中括号间的数字来获取每个元素,就如例子所演示的那样。要注意,Ruby的数组是从0开 始的。

  a = [ 1, 'cat', 3.14 ] # array with three elements
  # access the first element
  a[0]-> 1
  # set the third element
  a[2] = nil
  # dump out the array
  a-> [1, "cat", nil]

你可能已经注意到,我们在例子中使用了一个特殊的值nil。在许多语言中,nil的概念(或者null) 是"没有对象"。在Ruby中,不是这样子的;nil是一个对象,就和其它对象一样;它代表什么都没有。不 管怎样,让我们回到数组和哈希表吧。

有时候,创建单词数组是件痛苦的事情,它包含了许多引号和逗号。幸运的,Ruby有一个快捷的方式 :%w能使用我们只做我们想做的。

  a = [ 'ant', 'bee', 'cat', 'dog', 'elk' ]
  a[0]-> "ant"
  a[3]-> "dog"
  # this is the same:
  a = %w{ ant bee cat dog elk }
  a[0]-> "ant"
  a[3]-> "dog"

Ruby的哈希表和数组很相似。哈希表使用花括号而不是中括号。哈希表需要为每个项提供两个对象: 一个是键,另一个是它的值。

例如,你想为乐队表示音乐器材。你可以使用哈希表来实现它。

  inst_section = {
  'cello' => 'string',
  'clarinet' => 'woodwind',
  'drum' => 'percussion',
  'oboe' => 'woodwind',
  'trumpet' => 'brass',
  'violin' => 'string'
  }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 哈希表
, 对象
, elk
, ruby
, 哈希
, 一个
, 中括号
Ruby数组操作
ruby 哈希表、programming ruby、programming ruby pdf、programming ruby 4th、programming ruby下载,以便于您获取更多的相关知识。

时间: 2024-11-02 17:51:28

Programming Ruby——数组,哈希表和控制结构的相关文章

PHP关联数组与哈希表(hash table) 不指定

PHP中有一种数据类型非常重要,它就是关联数组,又称为哈希表(hash table),是一种非常好用的数据结构. 在程序中,我们可能会遇到需要消重的问题,举一个最简单的模型: 有一份用户名列表,存储了 10000 个用户名,没有重复项: 还有一份黑名单列表,存储了 2000 个用户名,格式与用户名列表相同: 现在需要从用户名列表中删除处在黑名单里的用户名,要求用尽量快的时间处理. 这个问题是一个小规模的处理量,如果实际一点,2 个表都可能很大,比如有 2 亿条记录. 我最开始想到的方法,就是做一

php如何在数组和哈希表上工作

在数组和哈希表上工作 在C语言中, 有两种不同的基础方法用来在一个结构体中存储任意数量的独立数据元素. 两种方法都有赞成者和反对者. 向量 Vs. 链表 应用的编写通常基于特定类型数据的特性的选择, 需要存储多少数据, 以及需要多快速度的检索. 为了能够有对等的认知, 我们先来看看简单的看看这些存储机制. 向量 向量是一块连续的内存空间, 它们包含的数据有规律的间隔. 向量最常见的例子就是字符串变量(char *或char []), 它包含了一个接着一个的字符(字节)序列. char foo[4

【探索PowerShell 】【八】数组、哈希表

我们经常在程序设计中用到的数组,同样在脚本中很常用.本节就详细介绍一下数组,以及哈希表在PowerShell中的使用. 数组 在PowerShell中,声明一个变量为数组时,需要使用符号"@",例如: $strUsers=@(""user1","user2","user3) <enter> 这样,我们就声明了一个具有3个成员的数组.查看它的值,使用: $strUsers <enter> 还有一些其他的操

将一个二维数组转换为 hashmap 哈希表

/**  * 将一个二维数组转换为 hashmap  *  * 如果省略 $val 参数,则转换结果每一项为包含该项所有数据的数组.  *  * @param array $arr  * @param string $keyField  * @param string $val  *  * @return array  */ function arrHash(& $arr, $keyField, $val = null) {     $ret = array();     if ($val) {

ruby 数组使用教程_ruby专题

你通过在方括号里列出元素并用逗号将它们相互隔开来创建一个数组. Ruby的数组可以适应不同的对象类型 ruby> ary = [1, 2, "3"]    [1, 2, "3"]   就像前面提到的字符串一样.数组也可以相乘或相加 ruby> ary + ["foo", "bar"]    [1, 2, "3", "foo", "bar"] ruby>

浅谈算法和数据结构 十一 哈希表

在前面的系列文章中,依次介绍了基于无序列表的顺序查找,基于有序数组的二分查找,平衡查找树,以及红黑树,下图是他们在平均以及最差情况下的时间复杂度: 可以看到在时间复杂度上,红黑树在平均情况下插入,查找以及删除上都达到了lgN的时间复杂度. 那么有没有查找效率更高的数据结构呢,答案就是本文接下来要介绍了散列表,也叫哈希表(Hash Table) 什么是哈希表 哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值. 哈希的思路很简单

AS2.0中实现数据结构-哈希表

数据|数据结构 在游戏制作中我们经常需要存储一些离散的对象数据,比如道具箱里的道具,经常需要执行插入和删除操作,而且道具之间没有联系是无序排列的.有些人会说直接用数组不就得了,但是有大量数据存储时的数组的删除插入操作的效率是很低的.因此我们需要哈希表这样的可以提供快速的插入和删除,查找操作的数据结构,不论哈希表中有多少数据,插入和删除操作只需要接近常量的时间:即O(1)的时间级.既然这么好那么我们的AS可以实现吗?当然可以!AS发展到AS2.0,已经成为在语法上更接近于Java + Pascal

数据结构-哈希表(C描述)

1.基于分离链解决冲突 1.1主要的存储结构 struct ListNode { ElementType Element; Position Next; }; 这是存储数据的结构,实际上是一个链表. typedef struct ListNode *Position; typedef Position List; struct HashTbl { int TableSize;//哈希表大小 List *TheLists;//指针数组 }; 这是哈希表主结构,*TheLists是一个指针数组,数组

Programming Ruby读书笔记(二)

1.再谈ruby数组. class Test a = [1, 3, 5, 7, 9] puts a[0] #----->1 puts a[-2] #----->7 puts a[1, 3] #----->[3, 5, 7] puts a[-3, 2] #----->[5, 7] puts a[1..3] #----->[3, 5, 7] puts a[1...3] #----->[3, 5] a[2] = 'cat' #----->[1, 3, "cat