如何教Tcl使用我提供的proc自动打印我的对象?

时间:2010-12-02 09:51:02

标签: printing tcl decorator

我有一个对象,Tcl在控制台中显示为其对象ID。我怎样才能扩展Tcl,这样每当打印出我的类型的对象时,会自动调用一个特殊的proc来打印它们的内容,而不仅仅是给对象id?

更多细节:我在Tcl中模仿一个lisp列表,它是由cons单元构建的,每个单元都有一个car和一个cdr。将使用以下内容创建1“two”3的列表:

(cons 1 (cons "two" (cons 3 nil)))

创建3个cons单元格。在汽车中有1个的最上面的cons单元有一个指向第二个cons单元的指针,它的车内有“两个”等。

通过这种表示,我希望上面的样本列表打印出来:

(1 "two" 3)

1 个答案:

答案 0 :(得分:2)

我假设你在C级工作。基本上,您在Tcl_ObjType字段的updateStringProc结构中注册了一个函数来执行此操作。您的函数需要生成整体值的字符串呈现(存储在ckalloc的{​​{1}}字段中的bytes ed字符串中;怎么做取决于你。