在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,不需要加$標示。
    以上只是定義了一個方法,如果有需要可以自己定義其它的過程來做初始化結構數據、搜索結構數據等其它操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章