如何在[incr tcl]中向类动态添加方法
在Incr-Tcl中,我通过更改类的方法,然后将其重新评估为运行中的Tcl解释器,而无需重新启动应用程序,从而提高了编程效率。为此,我必须使用语法定义类定义之外的方法,并将主体定义重新评估到正在运行的Tcl解释器中。那很好。令人惊讶的是,显然是有意的 一个类只能定义一次,尽管类方法的主体 可以一次又一次地定义进程以进行交互式调试 当然,在开发过程中,我会将方法(重构)拆分为两个或多个附加方法,以便在同一个类中定义 我想找到一种方法,在运行的Tcl解释器中强制向现有类添加方法:如何在[incr tcl]中向类动态添加方法,tcl,redefinition,incr-tcl,Tcl,Redefinition,Incr Tcl,在Incr-Tcl中,我通过更改类的方法,然后将其重新评估为运行中的Tcl解释器,而无需重新启动应用程序,从而提高了编程效率。为此,我必须使用语法定义类定义之外的方法,并将主体定义重新评估到正在运行的Tcl解释器中。那很好。令人惊讶的是,显然是有意的 一个类只能定义一次,尽管类方法的主体 可以一次又一次地定义进程以进行交互式调试 当然,在开发过程中,我会将方法(重构)拆分为两个或多个附加方法,以便在同一个类中定义 我想找到一种方法,在运行的Tcl解释器中强制向现有类添加方法: 在不删除类定义并将
如果您需要这种功能,您可以考虑使用XOTCL或(从TCL 8.5开始)TCROO,这两个都支持创建后类的完全重新配置。我现在只能接受这个限制,因为短期内不可能迁移到TclOO。(不要将您的答案标记为已接受的答案,因为可能有人会带着一种方法回来)。
itcl::body helloworld::greet {} {
puts "Goodbye Cruel World from $owner"
}
% package require Itcl
3.4
% itcl::class hi {
# Nobody in here but us chickens...
}
% hi Hi
Hi
% itcl::body hi::there {} {puts "Howdy!"}
function "there" is not defined in class "::hi"