Ruby 笔记数组 2013.11.08

         注意 Ruby 方法会非显式的返回值:返回最后一个语句的值。在上面的这个例子中,返回的值会根据参数是否为空而返回两个字符串中的一个。Ruby 也支持显式的指定返回值,下面的代码和上面的效果一样:


         数组与hash

       Ruby 的数组和 hash 都是带索引的集合。它们都可以容纳一组对象,并允许以索引键来访问这些对
象。对数组而言,索引键是一个整数;而 hash 则允许用任何对象作为索引键。数组和 hash 都能够自动
增长以容纳新的元素。数组的访问效率更高,hash 则更为灵活。数组和 hash 都可以容纳不同类型的对
象:譬如说,一个数组中可以容纳一个整数、一个字符串和一个浮点数。
用数组字面量(array literal)——放在方括号之间的一组元素——即可创建并初始化一个新的
数组对象。有了一个数组对象之后,你可以在方括号中提供索引值,从而访问其中任意一个元素(如下例
所示)。Ruby 的数组索引从 0 开始。
a = [ 1, 'cat' , 3.14 ]
a[0]
a[2] = nil
#
#
#
#
array with three elements
access the first element (1)
set the third element
array now [ 1, 'cat', nil ]
也许你已经注意到了,我们在这里使用了一个特殊的值 nil。在很多语言中,nil(或者 null)代
表“没有对象”;但在 Ruby 中却不然:nil 是一个对象,就和别的对象一样,不过它恰好代表“什么都
没有”。
数组的一个常用方法是<<,该方法会把一个值附加到数组的尾端。
ages = []
for person in @people
ages << person.age
end
如果要创建一个由单词组成的数组,Ruby 提供了一个快捷的做法。
a = [ 'ant' , 'bee' , 'cat' , 'dog' , 'elk' ]
# this is the same:
a = %w{ ant bee cat dog elk }
Ruby 的 hash 与数组非常相似。hash 字面量使用大括号,而不是方括号,并且其中的每个条目必
须由两个对象组成:前者是索引键,后者是值。譬如说,可以这样建立“乐器”与“乐器种类”之间的对
应关系。
inst_section = {
:cello => 'string' ,
:clarinet => 'woodwind' ,
:drum => 'percussion' ,
:oboe => 'woodwind' ,
:trumpet => 'brass' ,
:violin => 'string'
}
=>左边的东西是索引键,右边的是与之对应的值。在同一个 hash 中,索引键必须唯一,也就是说
你不能为:drum 建立两个条目。
hash 中的键和值可以是任意对象——你甚至可以在 hash 中保存数组或
者别的 hash.在 Rails 中,通常使用符号来作为 hash 的索引键。Rails 中使用的很多 hash 都经过了
精心的修改,因此你既可以使用字符串作为索引键,也可以使用符号作为索引键。
当访问 hash 中的元素时,索引也是放在方括号中的,就像数组一样。
inst_section[:oboe]
inst_section[:cello]
inst_section[:bassoon]
#=> 'woodwind'
#=> 'string'
#=> nil
正如上例所示,如果查找所使用的索引键不在其中,hash 就会返回 nil。在条件表达式中 nil 也
意味着 false,因此大多数时候 hash 的这一特性还是很方便的。
hash 与参数列表
Hashes and Parameter Lists
当进行方法调用时,可以传入 hash 作为参数。如果这个 hash 正好是调用的最后一个参数,Ruby
还允许你省略大括号。Rails 大量使用了这一特性,下列代码片段就向 redirect_to()方法传入了一
个 hash,其中包含两个元素。当实际使用时,你完全可以忘记“这是一个 hash”,就当作 Ruby 支持关
键字参数(keyword argument)好了。
redirect_to :action => 'show' , :id => product.id



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值