.
.
很多人在使用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 structTemp