ruby元程式設計 類定義

2021-07-02 04:54:02 字數 2188 閱讀 6395

(1)類是乙個增強的模組,所以所有類定義中的特性都同樣適用於模組定義。

(2)ruby程式中總是存在乙個當前物件:self,類似地,也總有乙個當前類或模組存在,當定義乙個方法時,該方法將成為當前類的乙個例項方法。

(3)當通過class關鍵字開啟乙個類時,這個類就成為當前類。

(4)module#class_eval()方法(module_eval())方法可以在不知道類名的情況下開啟乙個類,例: ?

12

3

4

5

6

7

defadd_method_to(a_class)

a_class.class_evaldo

defm

'hello'

end

end

end

(5)類變數是以@@開頭的變數,類變數與類例項變數不同,它們可以被子類或者類的例項所使用

(6)單件方法,可以給當個物件新增方法,例:

?

1

2

3

4

5

6

7

str ="just a regular string"

defstr.title?

self.upcase ==self

end

str.title?#=>false

str.methods.grep(/title?/)#=>["title?"]

str.singleton_methods#=>["title?"]

(7)類方法的實質就是:它們是乙個類的單件方法

(8)module#attr_reader()、attr_writer()、attr_accessor()可以用於生成讀、寫、兩者都生成

(9)eigenclass,獲取乙個eigenclass:

?

1

2

3

4

5

obj = obejct.new

eigenclass =class<

self

end

eigenclass.class#class

(10)eigenclass只有乙個例項並且不能改被繼承

(11)到呼叫乙個物件呼叫單件方法時,如果物件有eigenclass,先去eigenclass找,再向上找父類

(12)alias :new_name :old_name 可以用來給方法取別名。alias是個關鍵字,和他類似的還有乙個module#alias_method方法

(13)環繞別名:

(1)給方法定義乙個別名

(2)重定義這個方法

(3)在新的方法中呼叫老的方法

(14)加上eigenclass後的類關係圖:

由於圖已經比較亂了,class類的class箭頭沒有給出,class.class   #=> class

從上圖,可以看出很多的規律:

元程式設計 類定義

注意 類也是物件 當前類 頂層的類為object,若在此定義方法則為object的例項方法 class myclass class 開啟的myclass 即為當前類 def my method myclass為當前類 endendclass eval 方法 class 限制 需要知道類名 class...

Ruby 元程式設計

ruby 語言在抽象層面有了元程式設計支援,功能相當強大,如果業務模型有很大的相似性,相信元程式設計會讓你節省大量 舉乙個小例如下,這裡只是使用了乙個class eval 還有instance eval,module eval,function.parameters等大量方法可以呼叫 那麼可以設計如...

Ruby元程式設計學習

1.ruby元程式設計的含義 ruby中的元程式設計,是可以在執行時動態的操作語言結構 如類 模組 例項變數等 的技術。你甚至可以在不用重啟的的情況下,在執行時直接鍵入一段新的ruby 並執行他。ruby的元程式設計,也具有 利用 來編寫 的作用,例如,常見的attr accesstor等方法就是如...