注册
登录
会员
标签
统计
帮助
RORChina - 红魔中国社区门户
»
红魔原创
» Ruby学习笔记10 数据结构
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
Ruby学习笔记10 数据结构
卡卡西
新手上路
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2007-10-5 20:26
只看该作者
Ruby学习笔记10 数据结构
11.
数据
结构
--------------------
11.1 数组
======
数组是使用方括号和用逗号隔开的单个
对象
参考列表创建的。
presidents=["John","Richard","Gerald","Ronald","George","William"];
为了更为容易地创建一个充满单词的数组,Ruby提供了一个特殊的标志来消除双引号和逗号,见下面例子:
presidents= %w[ John Richard Gerald Ronald George William];
"数组"一词经常意味着一组相同性质的对象的集合。但在Ruby中,不是这样。在Ruby中,一个"数组"可以是由不同性质的对象参考组成的集合。因此,下面是有效的数组表达形式:
order_date=Date.today()
shirt_information=[14.5,"Long",32,order_date]
象
Java
一样,索引从0开始,索引可用来从数组中检索对象参考。下面的示例中请求的是,上面创建的shirt_information数组中的第3个元素(索引为2)。注意,你可以使用方括号标志或at方法来检索数组中的对象参考。
irb(main):003:0> shirt_information[2]
=> 32
irb(main):004:0> shirt_information.at(2)
=> 32
有趣的是,你还可以使用一个负数索引来引用数组中的元素。一个负数索引是从数组尾部开始计数的。
irb(main):005:0> shirt_information[-3]
=> "Long"
组是动态的,意味着数组的大小可以根据你的操作而动态地改变。你可以使用[index]=操作符来添加或替换一个数组中的元素。
irb(main):013:0> shirt_information
=> [14.5, "Long", 32, #<Date: 4907585/2,0,2299161>]
irb(main):014:0> shirt_information[1]="Medium" #change shirt length
=> "Medium"
irb(main):015:0> shirt_information[4]=49.99 #add shirt cost
=> 49.99
irb(main):016:0> shirt_information
=> [14.5, "Medium", 32, #<Date: 4907585/2,0,2299161>, 49.99]
你也可以使用数字对和范围来由数组的一部分创建一个新数组,通过使用一个[开始索引,元素数目]标志或[开始索引...结束索引]标志。
irb(main):019:0> shirt_information
=> [14.5, "Long", 32, #<Date: 4907585/2,0,2299161>, 49.99]
irb(main):020:0> shirt_dimensions = shirt_information[0,3]
=> [14.5, "Long", 32]
irb(main):021:0> shirt_order = shirt_information[2..5]
=> [32, #<Date: 4907585/2,0,2299161>, 49.99]
irb(main):030:0> shirt_information[-3,2]
=> [32, #<Date: 4907585/2,0,2299161>]
这个结合了赋值运算符([]=)的标志将产生一个很复杂的元素插入或代替操作。一个开始/结束索引或范围可以用在赋值操作符中。具体使用请参考下面的示例:
irb(main):001:0> test_array=["zero", "one", "two", "three", "four"]
=> ["zero", "one", "two", "three", "four"]
irb(main):002:0> #starting at the second element, replace the next
two elements with a single element
irb(main):003:0* test_array[1,2]=1
=> 1
irb(main):004:0> test_array
=> ["zero", 1, "three", "four"]
irb(main):005:0> #insert a new element after the second one
(zero as a second parameter indicates "insert")
irb(main):006:0* test_array[2,0]=2
=> 2
irb(main):007:0> test_array
=> ["zero", 1, 2, "three", "four"]
irb(main):008:0> #add an array of elements after element 5
irb(main):009:0* test_array[5,0]=[5,6,7]
=> [5, 6, 7]
irb(main):010:0> test_array
=> ["zero", 1, 2, "three", "four", 5, 6, 7]
irb(main):011:0> #replace elements in the index range of 3..4 with the array assigned
irb(main):012:0* test_array[3..4]=[3,4]
=> [3, 4]
irb(main):013:0> test_array
=> ["zero", 1, 2, 3, 4, 5, 6, 7]
也许Ruby数组中最有力量的运算可以从数学操作符中找到答案-它们能够从现在数组创建新的数组。例如,+操作符允许你由两个数组的连接创建一个新数组,而*操作符允许你复制或连接一个数组自身若干次。
irb(main):033:0> shirt_information
=> [14.5, "Long", 32, #<Date: 4907585/2,0,2299161>, 49.99]
irb(main):034:0> pant_information=[34,32,59.99,order_date]
=> [34, 32, 59.99, #<Date: 4907585/2,0,2299161>]
irb(main):035:0> shirt_information + pant_information
=> [14.5, "Long", 32, #<Date: 4907585/2,0,2299161>, 49.99, 34, 32, 59.99,
#<Date: 4907585/2,0,2299161>]
irb(main):036:0> shirt_information * 2
=> [14.5, "Long", 32, #<Date: 4907585/2,0,2299161>, 49.99, 14.5, "Long", 32,
#<Date: 4907585/2,0,2299161>, 49.99]
irb(main):037:0> array1 = [2,4,6,8,10]
=> [2, 4, 6, 8, 10]
irb(main):038:0> array2=[3,6,9]
=> [3, 6, 9]
irb(main):039:0> array1 - array2
=> [2, 4, 8, 10]
11.2 哈希表数组:
======
与数组联系最密切的就是哈希表。在一个数组中,索引是一个整数。在Ruby中Hash类行为上与Array非常相似,但是它允许在集合中出现到参考对象的任何类型的对象"索引"(或键)。在另外的
程序
语言
中,这可能被称为一个字典或地图或哈希地图。一般地,当使用哈希表时,你应该为集合中的每个元素提供两个对象参考。其中,一个对象参考用作键,另一个用作该键所指对象(即"值")。用于指示一个键对象所指内容的标志是=>符号。当创建哈希表时,键/值对可以在两个大括号之间被收集。作为一个哈希表的例子,你可以在哈希表中使用简单的字符串对象作为键来引用Date对象(值)。
holidays={"New Year"=>Date.parse("2006-01-02"), "MLB Birthday"=> Date.parse("2006-01-16"),
"Washington Birthday"=>Date.parse("2006-02-20"), "Memorial Day"=>Date.parse("2006-05-29"), "July
4th"=>Date.parse("2006-07-05")}
为了检索纪念日的Date对象,你可以使用"Memorial Day"字符串键。
irb(main):004:0> holidays["Memorial Day"]
=> #
irb(main):005:0> holidays["Memorial Day"].to_s
=> "2006-05-29"
如你所想,在数组和哈希表中还有另外许多方法来允许你存取和修改集合中的单个元素或改变全部集合本身。因此,在Ruby中,数组和哈希表都是功能极强的动态的数据结构。
一旦你有一个对象参考的集合,那么在编程中最常用的一项任务就是遍历该集合中的每一个元素并执行某些操作。Ruby当然也提供了数组和哈希表中的类似机制。Ruby提供的实现遍历集合的机制是该集合对象上的一组方法。Array中的方法(如each,each_index,delete_if)和 Hash中的方法(如each,each_key,each_value,each_pair)允许你的编码进行集合遍历并执行特定的任务。事实上, Ruby中的许多类都包含迭代子(iterator)方法。例如,String就提供了一个iterator方法来执行字符串的以字符或字节为单位的遍历任务。然而,在你理解iterator方法前,你首先需要理解Ruby中代码块的概念。因为当遍历集合中的元素时,对于每一个iterator方法,都是通过传递一个代码块来执行的。
_________________
搜索更多相关主题的帖子:
数据结构
Ruby
笔记
索引
方括号
UID
7
帖子
116
精华
0
积分
0
阅读权限
10
在线时间
4 小时
注册时间
2007-10-5
最后登录
2007-12-19
查看详细资料
TOP
球磨机器
新手上路
个人空间
发短消息
加为好友
当前离线
2
#
大
中
小
发表于 2008-4-21 01:16
只看该作者
反击破碎机价格 强力反击破碎机
反击破碎机价格
强力反击破碎机
机制砂生产线、碎石设备生产线、机制砂生产线、碎石机、破碎机、第三代制沙机
UID
1489
帖子
59
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-4-18
最后登录
2008-4-21
查看个人网站
查看详细资料
TOP
pqrs608
新手上路
个人空间
发短消息
加为好友
当前离线
3
#
大
中
小
发表于 2008-4-23 03:54
只看该作者
沈阳宏海机械制造厂专业提供过桥米线机,多功能自熟米线年糕机,云南过桥米线机
专业提供过桥米线机,多功能自熟米线年糕机,云南过桥米线机 网址
www.86hh.com
米线机分段螺旋挤压复合式设计,无粘结技术,操作简单品质坚实.用电省产量高成本低适合现做现卖或加工米线年糕和玉米面条,米线机价格优惠随时技术售后服务024-82116562 QQ:491783951
沈阳宏海
UID
1507
帖子
219
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-4-20
最后登录
2008-5-8
查看个人网站
查看详细资料
TOP
dfh4uy9
新手上路
个人空间
发短消息
加为好友
当前离线
4
#
大
中
小
发表于 2008-4-23 11:29
只看该作者
来这样好的地方
美国宾州州立大学食物营养学教授芭芭拉·罗尔斯说,早餐时段“是不费力便可以进补的最佳时段”,相信早餐的重要性,大家已经了解得越来越多了感谢写了这么好的文章给需要
装饰工程公司
的朋友
空调维修
带来了福音
优秀的
装修公司
UID
1362
帖子
65
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-4-10
最后登录
2008-5-21
查看个人网站
查看详细资料
TOP
健身减肥小子
新手上路
个人空间
发短消息
加为好友
当前离线
5
#
大
中
小
发表于 2008-4-26 03:37
只看该作者
丽妍堂真轻松排汗运动机
正品丽妍堂真轻松排汗运动机厂家授权直销13738963879原厂正品--丽妍堂真轻松排汗运动机,蒸美康排汗运动机厂家授权,优惠直销.订购热线0579-87368390,运动排汗,强身健体,采用薰蒸的原理,集排毒,减压,健体,美容养颜,减肥,黄金睡眠功效为一体.每天蒸一蒸,跟疲劳,斑点,毒素说再见. 丽妍堂排汗,丽妍堂排汗机好不好,丽妍堂排汗机怎么样,丽妍堂排汗机好吗,丽妍堂真轻松排汗机 丽妍堂排汗运动机,丽妍堂排汗机的价格,丽妍堂真舒服排汗机,丽妍堂排汗机好不好,丽妍堂排汗机怎么样,丽妍堂排汗机好吗,丽妍堂排汗机价格,丽妍堂蒸汽排汗机。公司网站:www.hd273.com
健身新产品
UID
1513
帖子
285
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-4-20
最后登录
2008-5-16
查看个人网站
查看详细资料
TOP
rstu022
新手上路
个人空间
发短消息
加为好友
当前离线
6
#
大
中
小
发表于 2008-4-30 00:37
只看该作者
求购球磨机 球磨机厂家
求购球磨机
球磨机厂家
选矿设备选铁设备选矿生产线球磨机价格报价
UID
1508
帖子
436
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-4-20
最后登录
2008-9-7
查看个人网站
查看详细资料
TOP
fjingke9
新手上路
个人空间
发短消息
加为好友
当前离线
7
#
大
中
小
发表于 2008-4-30 11:08
只看该作者
北京监控有限公司1
决定现有电脑加装监控卡,
监控
还是嵌入式硬盘录像机做您的监控主机; 使用电脑加装监控卡,整体投入比较低,适用于熟悉电脑安装、有专业人员值守、功能要求比较多的场所。电脑需要24小时开机;
工控
使用嵌入式硬盘录像机不需要专业知识、不需要值守
、
电梯
操作非常简单,像使用VCD一样方便;
第二步:决定需要几个摄像机
安防
,再根据具体的情况确定摄像机的镜头监视范围:必须要明确摄像机到监控点的距离和需要监控的面积,大家可以根据下面的公式得出大致的镜头参数。至于清晰度,我们认为:420电视线的摄像机已经足够了
网站优化
UID
1509
帖子
160
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-4-20
最后登录
2008-5-1
查看个人网站
查看详细资料
TOP
qzyy669
新手上路
个人空间
发短消息
加为好友
当前离线
8
#
大
中
小
发表于 2008-5-15 23:38
只看该作者
哈楼信息技术有限公司专业从事搜索引擎优化
哈楼信息技术有限公司专注于
SEO
优化技术的研究,为企业提供专业SEO服务从事搜索引擎优化
网站优化
,
seo
,
常州网站优化
,
常州SEO
,致力搜索引擎优化研究,与广大SEO爱好者分享搜索引擎优化技巧与经验。
专业从事网站优化,SEO,搜索引擎优化等专业网络技术
UID
1617
帖子
179
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-4-29
最后登录
2008-6-9
查看个人网站
查看详细资料
TOP
hunterxu
新手上路
个人空间
发短消息
加为好友
当前离线
9
#
大
中
小
发表于 2008-5-16 11:25
只看该作者
路过~
不知道发生什么事情!!
顺便发个"美女QQ视频",大家看看!!
-------------------------------------------------------------------------------------------------------------------------------
网络
签名:
男人不坏,女人不爱!!
每日英语:
Mold Sources
/
Stainless Steel Jewelry
/
Jewelry Manufacturer
Mold Sources
UID
1774
帖子
20
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-5-15
最后登录
2008-5-16
查看个人网站
查看详细资料
TOP
qrst430
新手上路
个人空间
发短消息
加为好友
当前离线
10
#
大
中
小
发表于 2008-5-19 06:42
只看该作者
棉花糖机,冰淇淋机,韩国小鱼饼,烤鸟蛋机,饺子机
致富机械,致富好助手,沈阳基石东方机械有限公司提供 www.js888.net
棉花糖机
www.js888.net
冰淇淋机
www.js888.net
韩国小鱼饼
www.js888.net
烤鸟蛋机
www.js888.net
饺子机 www.js888.net
UID
1755
帖子
472
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-5-13
最后登录
2008-9-8
查看个人网站
查看详细资料
TOP
华恒冰淇淋机器
新手上路
个人空间
发短消息
加为好友
当前离线
11
#
大
中
小
发表于 2008-6-28 00:11
只看该作者
双层豪华型汉堡包机华恒公司024-88324639.31401808.88324850
汉堡包
汉堡包 hamburger
汉堡包的来历
汉堡包,被称为西方五大快餐之一,如何起源的呢?
原始的汉堡包是剁碎的牛肉末和面做成的肉饼,故称牛肉饼。古代鞑靼人有生吃牛肉的习惯,随着鞑靼人的西迁,先传入巴尔干半岛,而后传到德意志,逐淅改生食为熟食。德国汉堡地区的人将其加以改进,将剁碎的牛肉泥揉在面粉中,摊成饼煎烤来吃,遂以地名而称为“汉堡肉饼”。1850年,德国移民将汉堡肉饼烹制技艺带到美国。后来花样翻新,逐渐与三明治合流,将牛肉饼夹在一剖为二的小面包当中,称为“汉堡包”。
]
直接点击查看公司网站详细内容
双层豪华型汉堡包机
双层豪华型汉堡包机
双层豪华型汉堡包机
双层豪华型汉堡包机
双层豪华型汉堡包机
免费服务电话
公司网站:www.130abc.com 电话024-88324639 024-88324850
业务咨询QQ:337808621 273037046 415160829
沈飞航天024-31401808三色冰淇淋机,西雅斯冰淇淋机,软硬冰淇淋机网址www.9e9i.com
UID
1743
帖子
279
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-5-12
最后登录
2008-7-24
查看个人网站
查看详细资料
TOP
hkpic1573
新手上路
个人空间
发短消息
加为好友
当前离线
12
#
大
中
小
发表于 2008-7-18 13:15
只看该作者
顶你啊
对了楼主我想问一下
干燥设备
在那里有买呢?我家想开个那些店子需要那些设备,希望大家帮忙一下,谢谢了 也可以到本人店看一下
www.cz-drying.cn
足球比分
UID
1416
帖子
176
精华
0
积分
0
阅读权限
10
在线时间
0 小时
注册时间
2008-4-14
最后登录
2008-8-28
查看个人网站
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
技术交流区
※Ruby新手讨论区※
RUBY文档中心
Ruby高级应用
※Ruby On Rails※
数据库讨论
推荐栏目
开源项目讨论
红魔原创
文档资源下载
综合文档下载中心
红魔菜鸟栖息地
※WEB标准化※
※javascript技术/Ajax技术※
※其它语言开发※
≡ 综合交流区≡
求职招聘
※业界新闻与评论※
图书与评论
≡ 非技术区 ≡
娱乐乐园
摄影贴图
English Forum
广告发布
议事大厅
站务交流
本族GDP(2005-10-05--2007-10-14):活跃会员22868人 财富573166魔币 | 低保户20503人/89.66% | 小康之家2297人/10.04% | 享受生活45人/0.2% | 小富翁23人/0.1%