【转载地址】:http://www.blogjava.net/xvridan/archive/2007/02/07/98538.html
Ruby的数组和hash都是带索引的集合。它们都可以容纳一组对象,并允许以索引键来访问这些对象。对数组而言,索引键是一个整数;而hash则允许用任何对象作为索引键。数组和hash都能够自动增长以容纳新的元素。数组和hash都可以容纳不同类型的对象。
数组:
方括号里列出元素并用逗号将它们相互隔开来创建一个数组. Ruby的数组可以适应不同的对象类型
ruby> ary = [1, 2, "3"]
[1, 2, "3"]
在Ruby中数组中的元素可以是nil(null)。nil在Ruby中是一个对象与其它对象一样,不过它恰好代表“什么都没有”。
就像前面提到的字符串一样.数组也可以相乘或相加
ruby> ary + ["foo", "bar"]
[1, 2, "3", "foo", "bar"]
ruby> ary * 2
[1, 2, "3", 1, 2, "3"]
我们可用索引来访问数组的任意一部分.
ruby> ary[0]
1
ruby> ary[0,2]
[1, 2]
ruby> ary[0..1]
[1, 2]
ruby> ary[-2]
2
ruby> ary[-2,2]
[2, "3"]
ruby> ary[-2..-1]
[2, "3"]
(负数索引表示到数组末尾的偏移,而不是从开头算起.)
数组可以和字符串互相转化,分别使用join和split:
ruby> str = ary.join(":")
"1:2:3"
ruby> str.split(":")
["1", "2", "3"]
数组的一个常用的方法是<<,该方法会把一个值附加到数组的尾端。
ages = []
for person in @people
ages << person.age
end
Ruby提供一个快捷创建由单词组成的数组:
a=['ant','bee','cat']
#this is the same:
a=%w{ant bee cat}
哈希表
一个关联数组不通过连续的数字索引来访问,而是通过任何类型的主键(key)访问.这样的数组有时被叫作哈希(hash)或者字典
(dictionary).在Ruby里,我们趋向于用哈希这个术语.将一对对的元素用逗号分隔开,并用大括号({})括起来,这样就组成了一个哈希表.
你用一个关键字在哈希表里进行搜索,就像你在数组里用索引来提取数据一样.
ruby> h = {1 => 2, "2" => "4"}
{1=>2, "2"=>"4"}
ruby> h[1]
2
ruby> h["2"]
"4"
ruby> h[5]
nil
ruby> h[5] = 10 # appending value
10
ruby> h
{5=>10, 1=>2, "2"=>"4"}
ruby> h.delete 1 # deleting value
2
ruby> h[1]
nil
ruby> h
{5=>10, "2"=>"4"}
=>左边的是索引键,右边的是与之对应的值。在同一hash中,索引键必须唯一。hash中的键和值可以是任意对象,甚至可以在hash中保存数组或别的hash.
在访问hash中的元素时,索引也是放在方括号中。
方法调用时,可以传入hash作为参数。如果这个hash正好是调用的最后一个参数,Ruby允许省略大括号。如rails中的redirect_to()方法
redirect_to :action =>'show', :id=>product.id
分享到:
相关推荐
这些对象可以是任何类型的 Ruby 对象,包括但不限于字符串(String)、整数(Integer)、哈希(Hash)甚至是其他数组(Array)等。数组中的每个元素都有一个与之关联的索引,索引从 0 开始。此外,Ruby 支持负数索引,即索引...
今天学习的是数组和Hash,数组在很多编程语言中都能常常用到。 数组: 数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据;这和JAVA不同,在JAVA中,数组是存储同一类型数据的结构。 1. 在...
下面我们将深入探讨Ruby数组的各种操作。 1. **创建数组**:Ruby数组的创建非常直观,只需在方括号`[]`内列出元素,并用逗号隔开即可。例如,`ary = [1, 2, "3"]` 创建了一个包含整数和字符串的数组。 2. **数组...
与数组不同,数组的索引是整数型的,而哈希的键可以是任意对象类型。哈希在Ruby中的表示形式类似于这样:“employee” => “salary”。 #### 二、哈希的创建 在Ruby中,可以通过多种方式创建哈希。 ##### 1. 使用`...
Ruby的数组可以通过转换为Hash,但这要求数组必须包含偶数个元素。具体操作时,使用星号(*)操作符配合Hash构造函数可以实现数组到Hash的转换。 在Ruby的方法中,如果方法名末尾带有感叹号(!),表示该方法会改变原有...
1.创建哈希:就像创建数组一样,我们可以通过Hash类来创建一个Hash实例: h1 = Hash.new #默认值为nil h2 = Hash.new(“This is my first hash instance”) #默认值为” This is my first hash instance”: 上面两...
2.单引号与双引号差别: 双引号允许字符转义,单引号不允许转义,里是什么字符,用户看到的就是什么字符 单引号不允许字符插值 字符串拆分 1.以空格拆分:string.split(‘ ‘)字符串连接 方法一、’Ruby’ + ‘Monk’,...
在Ruby编程语言中,数组(Arrays)和散列表(Hashes)是两种非常重要的数据结构,它们用于存储和管理对象的集合。数组以整数为索引,而散列表则使用任意对象作为键。这两者都是动态调整大小的,允许在需要时添加新的...
3. `array_operations.rb`:演示了Ruby数组的操作,如遍历、添加元素等。 ```ruby arr = [1, 2, 3] arr.each { |num| puts num } arr puts arr.inspect ``` 4. `hash_usage.rb`:展示了Ruby哈希(Hash)的使用,...
根据提供的文件信息,我们将深入探讨与“Ruby编程Ruby Programming”这一主题相关的几个核心知识点。这本面向初学者和高级读者的指南旨在全面介绍Ruby编程语言的基础及其高级特性,因此我们将从多个角度来解析这些...
例如,它会详细介绍如何创建和使用类、继承机制、模块混入、块和 Proc 对象,以及符号(Symbol)、字符串(String)、数组(Array)、哈希(Hash)等基本数据类型的使用。核心库的理解对于掌握Ruby语言至关重要。 ...
hash = {"name" => "Ruby", "age" => 20} ``` 3. **流程控制:** 包括条件语句(if...elsif...else)、循环语句(while...do...end、for...in...do...end)等。 ```ruby if age > 18 puts "成年人" elsif age ...
它类似于数组,但与数组不同的是,`Hash`使用任意类型的对象作为键进行索引,而非整数索引。`Hash`中的键和值的返回顺序可能看似随机,通常不会按照插入顺序排列。 #### Hash的特点: - **键值对**:`Hash`由一...
此外,Ruby还有数组(Array)和哈希(Hash)等复合数据类型。 2. **控制结构**:Ruby中的控制结构包括条件语句(如if/else,case/when)、循环(如for,while,until,each)以及流程控制语句(如break, next, ...
6. **数组和哈希的改进**:这一版本中,数组和哈希的创建与操作得到了优化,如`Array#bsearch`和`Hash#slice`等方法的添加,使得数据操作更加便捷。 7. **Ruby调试器改进**:内置的调试工具如`pry`和`byebug`在Ruby...
3. **List**: 对于列表,Redis-Objects提供了`push`,`pop`,`lindex`等操作,使得开发者可以像操作Ruby数组一样处理Redis列表。 4. **Set**: Ruby-Objects提供了集合操作,如`add`,`remove`,`members`等,让...
Ruby 2.7.1对语法也进行了一些改进,例如弃用了`Hash#default`方法的旧用法,鼓励使用`Hash#default_proc`,后者提供了更灵活的默认值处理方式。此外,`Array#bsearch`方法现在支持`&`运算符,使得在数组中查找指定...
Ruby的集合类型包括数组(Array)、哈希(Hash)、范围(Range)和集合(Set)。数组是有序的元素序列,哈希则是一组键值对,提供了基于键的访问。范围表示一个连续的数值序列,集合则不包含重复元素。 Ruby的标准...
- **数组与哈希表**:学习如何使用数组和哈希表存储和操作数据。 - **集合操作**:介绍集合的概念及其在 Ruby 中的实现方法。 - **枚举器**:讲解如何使用枚举器(enumerator)来迭代处理集合中的元素。 以上内容...