我正在寫一個新的存取器,它有它自己的數組變量來保存信息,但是當我嘗試在其方法中調用class_eval時,該變量上的push方法不起作用。不能推入紅寶石陣列
及其寫入級和class_eval線如下的方法:
class_eval "def #{attr_name}=(value); #{attr_name} = value; #{information}.push value; end; def #{attr_name}_history; #{information}; end"
所以在這條線的推不起作用。
如果還有a.bar和a.another等,該怎麼辦。這會保留這些變量的單獨副本 – eytanfb 2012-03-03 21:09:53
在此示例中,'attr_name'在執行'class_eval'之前計算爲「foo」,因此它只爲一個參數添加歷史記錄。你可以編寫一個mixin爲你提到的每個變量運行這個邏輯,或者甚至查看instance_variables並自動添加它。 – 2012-03-05 03:52:15