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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章