我有一个对象,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)
答案 0 :(得分:2)
我假设你在C级工作。基本上,您在Tcl_ObjType
字段的updateStringProc
结构中注册了一个函数来执行此操作。您的函数需要生成整体值的字符串呈现(存储在ckalloc
的{{1}}字段中的bytes
ed字符串中;怎么做取决于你。