ruby元程式設計2 method

2021-07-09 17:14:06 字數 633 閱讀 7306

1. 動態方法

obj.send(:test, '1'), 這樣就可以動態呼叫obj 的test 方法, 1 是引數

好處:可以在程式執行的時候確定具體的要執行哪乙個方法;

send 方法的使用可以直接呼叫類的私有方法;

方法可以動態的定義: module#define_method

2.  method_missing

當呼叫不存在的方法的時候,程式邏輯或執行到method_missing , 我們可以在這個方法中定義自己的方法(define_methd),或者處理自己的邏輯

不存在的方法有乙個被稱作:幽靈方法

重寫method_missing的時候,當method_missing本身出錯的時候,會陷入深層遞迴!

3. 動態**

可以捕獲幽靈方法, 並把它**給另乙個物件

4.  處理method_missing方法,還有const_missing來處理異常的邏輯

兩種方法盡量都少用,動態方法是減少重複**,其實定義普通的方法,合適的實際引數也可以減少重複**,

真實方法會覆蓋幽靈方法,可以使用白板類減少問題,

盡量使用動態方法(define_method),

重寫method_missing會波及的範圍比較廣。

反射機制 2 Method和Field

以下 都需要另外import乙個student類來執行 以下4種方法,全部都在class類中 getmethods 獲得類的public型別的方法 取得所有public的方法,包括繼承的,介面中宣告的和自己定義的 getdeclaredmethods 取得所有當前類宣告的方法,包括public,pr...

Ruby 元程式設計

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

Ruby元程式設計學習

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