我正在实习和实习需要我学习和练习TCL - OO所以我一直在寻找TCL - OO的教程,例子和书籍,但我找不到任何东西,所以如果有人能给我一些我会非常感激关于TCL - OO的好建议.
我在网上做了一些研究,并发现了这些材料
链接:http: //www.tcl.tk/cgi-bin/tct/tip/257
书:TCL/TK开发人员指南第3版by clif Flynt - 在TCL上只有2章--OO
所以除了这两个参考文献,如果有人可以用额外的材料指导我,它将是辉煌的,提前谢谢
披露:我编写了 TclOO(在设计和测试中得到了其他人的大量帮助)。
TclOO 允许非常简单的使用,但是当您开始使用其大部分功能时可能会变得非常复杂。这是一个快速示例:
# Make a class
oo::class create Example {
variable x ;# Not the same as [variable] in a namespace!
constructor {} {
set x 1
}
method bar {} {
return [incr x]
}
}
Example create foo ;# Make an instance
puts [foo bar] ;# Call the instance to get 2
puts [foo bar] ;# Call the instance to get 3
puts [foo bar] ;# Call the instance to get 4
foo destroy ;# Kill the instance
Run Code Online (Sandbox Code Playgroud)
编写一个类非常简单,上面的内容足以让你做很多事情。有几个基本功能没有列出:superclass让你命名一个类的父类,默认为oo::object所有对象的类;forward允许您将方法调用分派到另一个命令,这是一种简单的委托;destructor让你写一些在对象消失时调用的东西;doExample new会在不命名的情况下创建一个对象,创建的对象的名称是调用它的结果;当前对象的名称是在self方法内部调用的结果。
构造函数和方法可以像基本的 Tclproc命令一样接受参数。析构函数不能。
对象可以是renamed,就像任何其他 Tcl 命令一样,并且在info object和info class. 您可以使用 将特殊的每个对象行为附加到任何对象oo::objdefine。每个对象都有一个私有命名空间,您可以使用它来存储状态(即x上面示例中的变量所在的位置)。
如果方法名称不以小写字母开头,则默认情况下不会导出方法(严格来说,这取决于它是否与全局模式“ [a-z]*”匹配)。如果您愿意,可以更改此设置。
类本身就是对象(的实例oo::class),这就是为什么它们是通过调用创建的oo::class create;它们的构造函数将您提供的脚本传递给 command oo::define,后者负责定义类的行为。该create和new方法只是:在类,使得这些类(分别命名为/未命名)的实例的方法。
您可以使用多重继承。和混合。和过滤器。并添加一个调度处理程序来处理调用未知方法的尝试。
您可以对oo::class自身进行子类化,以定义创建和管理对象的新方法。
您可以在运行时更改任何对象的类(除了oo::object和oo::class;出于理智的原因,它们被特别锁定)。
…
是的,我是 TclOO 的作者,但我仍在探索我的创作可以做什么。我已经非常努力地确保它几乎可以满足您的任何要求。