在Incr Tcl中,通過更改並重新評估類的方法爲正在運行的Tcl解釋器而無需重新啓動應用程序,我可以獲得編程生產力的提高。爲此,我必須使用body語法定義類定義之外的方法,並將正文定義重新評估爲正在運行的Tcl解釋器。這工作正常。令人驚訝的是,顯然在設計上,在Incr Tcl,如何向[incr-tcl]中的類動態添加方法
一個類只能定義一次,雖然類方法 和特效的機構可以爲交互式調試一次又一次地定義。
然而,在開發過程中,我將方法(重構)分解爲兩個或多個要在同一個類中定義的其他方法。
我想找到一種方法,這樣的方法,正在運行的Tcl解釋強行添加到現有的類:
- 沒有刪除和重新eval'ing類定義成運行Tcl解釋,
- 如果不重新啓動包含要擴充的Incr Tcl類的現有對象實例的Tcl應用程序,並且沒有從所述Tcl解釋器中刪除現有對象的結果。
我只需要這個作爲開發/調試儀式,而不是生產代碼(即,我不需要以編程方式動態添加方法)。我會接受粘性,邪惡,後門的答案。更改Incr Tcl的生產副本以添加其他行爲是不現實的,因爲我不得不使用Incr Tcl的二進制文件,它不幸被靜態綁定到正在運行的進程中,並且無法通過某些共享庫巫術來卸載和重新加載。
謝謝Donal。我現在只能忍受這個限制,因爲在短期內不可能遷移到TclOO。 (不要將你的答案標記爲已接受的答案,因爲也許有人可能會回來的方式來做到這一點)。 – bgoodr 2012-07-30 16:08:44