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等方法就是如...