昨天,跟朋友review code,發現了乙個hash_obj.collect寫成了hash_obj.each.collect。就想對hash有個簡單的總結。
首先檢視hash的祖先。
hash.ancestors #> [hash, enumerable, object, kernel, basicobject]
找到hash使用mixin的方式include了enumerable。enumerable提供了一系列的方法,如each,collect,map,sort之類的。include了enumerable的類只需要實現each就可以獲得所有如collect, map, sort這樣的方法。(當然sort比較特殊一點兒)。
當然hash就直接有collect方法,而不需要呼叫hash_obj.each.collect。
實現乙個例子:
class kiwi
include enumerable
def initialize(msg)
@msg = msg
enddef each
@msg.each
endendkiwi = kiwi.new([1,2,3])
kiwi.collect #=> [2, 4, 6]
kiwi這個類就可以直接使用collect方法,因為它實現了each。 ruby中的模組
什麼是模組 模組 module 是ruby特有的功能之一。類用來表現具有資料與行為 程式 的 東西 而模組大致來說,則是只有程式部分的集合體。類與模組最大的不同在於 1.模組不能建立例項 2.模組不能繼承 模組的用法 1 提供命名空間 命名空間 namespace 是為了讓方法 常數 類名稱不互相衝...
Ruby中的迴圈
1 首先是while迴圈和until迴圈 這是兩種相反的迴圈,舉例說明 x 1 until x 100 puts x x x 2 end 輸出 124 8163264 x 1 until x 100 puts x x x 2 break if x 200 end 永遠都不會執行 而while與unt...
ruby 中的符號
1.1 建立乙個繫結到特定物件的class a my string class book to sym 2.book 3.track.to s 4.track 2.相同的符號是乙個物件,相同的字元並不一定是乙個物件 這就是符號和字串最大的差別,符號是不可變的,不能對乙個符號進行修改。所以說,兩個看起...