2010-12-02 43 views
0

我有一個Tcl在控制檯中顯示爲對象ID的對象。我怎樣才能擴展Tcl,使得無論何時打印我的類型的對象,都會自動調用一個特殊的proc來打印它們的內容,而不僅僅是給出對象ID?我該如何教Tcl使用我提供的proc自動打印對象?

一些更多的細節:我在Tcl中模擬一個lisp列表,它是由每個有一輛車和一臺cdr的cons單元構建的。將創建1「2」3的列表:

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

它創建了3個cons單元。在其汽車中有1個的最高感應電池有指向其車內具有「兩個」的第二個感受單元的指針等。

有了這種表示形式,我希望上面的示例列表可以打印爲:

(1 "two" 3) 
+0

什麼是生產這些對象id?該對象是否可以完全由其字符串表示來描述? – 2010-12-02 10:12:37

+0

@Donal Fellows我已經擴展了這個問題以提供更多細節。它是具有對象標識符的cons單元。 cons單元可以用一個字符串來描述,該字符串將指針值保存到內存中對象的位置。 – WilliamKF 2010-12-02 13:52:31

回答

2

我假設你在C級別工作。基本上,您註冊一個函數在Tcl_ObjType結構中的updateStringProc字段中執行此操作。你的函數需要產生一個你整體值的字符串表達式(存儲在的bytes字段的ckalloc ed字符串中)。如何去做取決於你。