ruby中的Enumerable的使用

2021-06-11 00:16:08 字數 709 閱讀 2314

昨天,跟朋友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.相同的符號是乙個物件,相同的字元並不一定是乙個物件 這就是符號和字串最大的差別,符號是不可變的,不能對乙個符號進行修改。所以說,兩個看起...