行者的学习博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 很多人在使用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,不需要加$标示。
    以上只是定义了一个方法,如果有需要可以自己定义其它的过程来做初始化结构数据、搜索结构数据等其它操作。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dulixin/archive/2008/04/09/2267979.aspx

posted on 2009-07-30 18:06  ylclass  阅读(870)  评论(0编辑  收藏  举报