使用 TclOO 创建对象时出错
Error when creating objects using TclOO
我的系统上安装了 Tcl 8.6。我只是在尝试 TIP #257: Object Orientation for Tcl 中的一些示例:
oo::object create foo
::foo
oo::define foo {method bar {} {puts "Hello, World!"}}
foo does not refer to a class
while evaluating {oo::define foo {method bar {} {puts "Hello, World!"}}}
我认为我可以在没有 class 的情况下创建一个对象,或者我做错了什么?
使用 objdefine
而不是 define
来处理对象。
请注意 class 是一个对象,因此当您处理 class 本身 时,您仍然使用 objdefine
.
wiki 上的一些示例(以及 Tcllib oo::util
模块文档中的一个示例)是在 TclOO 仍处于成型阶段时编写的,并且在当前系统定义下不可执行。另一个问题是一些 wiki 页面描述了 TclOO 限制的巧妙解决方法,这些限制已经被消除并且不再需要任何解决方法,所以如果您从 wiki 学习 TclOO,您会感到困惑。如果有人知道好的、最新的教程,请随时通过链接发表评论。
(我只记得this本书的章节。我没有详细研究它,但它确实为我弄清楚了一些事情。)
文档:oo::define (also objdefine
), oo::util 包
我的系统上安装了 Tcl 8.6。我只是在尝试 TIP #257: Object Orientation for Tcl 中的一些示例:
oo::object create foo
::foo
oo::define foo {method bar {} {puts "Hello, World!"}}
foo does not refer to a class
while evaluating {oo::define foo {method bar {} {puts "Hello, World!"}}}
我认为我可以在没有 class 的情况下创建一个对象,或者我做错了什么?
使用 objdefine
而不是 define
来处理对象。
请注意 class 是一个对象,因此当您处理 class 本身 时,您仍然使用 objdefine
.
wiki 上的一些示例(以及 Tcllib oo::util
模块文档中的一个示例)是在 TclOO 仍处于成型阶段时编写的,并且在当前系统定义下不可执行。另一个问题是一些 wiki 页面描述了 TclOO 限制的巧妙解决方法,这些限制已经被消除并且不再需要任何解决方法,所以如果您从 wiki 学习 TclOO,您会感到困惑。如果有人知道好的、最新的教程,请随时通过链接发表评论。
(我只记得this本书的章节。我没有详细研究它,但它确实为我弄清楚了一些事情。)
文档:oo::define (also objdefine
), oo::util 包