天天看點

在tcl中建立struct結構

.

.

    很多人在使用tcl的時候都有疑問,為什麼tcl中沒有定義struct結構?那是因為在tcl中,namespace可以取代部分struct的功能,而且tcl的數組是非常強大的,不像C語言中限定索引必須為整數,tcl數組的索引理論上可以為任何字元串。如果在使用過程當中确實需要使用C語言風格的struct,可以使用數組來實作。下面就舉例說明實作方法。     1、首先定義一個struct模版,就像C語言中一樣,使用數組來定義。        假設需要的struct為structTemplet,裡面需要的元素分别為name、size、id、price,那麼需要這樣來定義模版,預設初始化數值都為空,也可以有一個預設值:         set structTemplet(name) {}         set structTemplet(size) {}         set structTemplet(id) {}          set structTemplet(price) {}     2、定義一個過程,根據定義的struct模版來生成一個新的結構。         假設過程名為struct_new,第一個參數structUser為需要生成的結構,第二個參數structTemplet為stuct模版,過程如下:         proc struct_new {structUser structTemplet} {             upvar 1 $structUser structNew             upvar 1 $structTemplet structOld             foreach index [array name structOld] {                 set stuctNew($index) $stuctOld($index)             }             return         }         注意在調用過程時把變量名稱傳給過程,調用的時候使用struct_new mystruct structTemplet,不需要加$标示。     以上隻是定義了一個方法,如果有需要可以自己定義其它的過程來做初始化結構資料、搜尋結構資料等其它操作。

繼續閱讀