TCL 过程proc


本篇文章介绍的是proc这个概念,称之为过程,实现的效果相当于你创建了一个TCL的命令一样,非常类似于C语言中的函数。

pro的基本概念结构

proc add {x y} {expr $x+ $y}

如上面code所示, add作为的是这个过程的名字,xy是过程的参数列表,参数之间要用空格隔开,接着用花括号{ } 代表过程体。proc从而生成了一个新的cmd,可以像cmd一样来调用他。注意有两个花括号,第一个是传递参数变量,第二个是proc的实体。

局部变量和全局变量:

在所有过程之外定义的变量称之为全局变量,而在proc内部定义的变量我们称之为局部变量,二者可以同名。全局变量的作用域是它所在的过程的内部,全局变量的作用域则不包括所有过程的内部,这里和C很不一样。用现实生活举一个例子,就相当于一个国家里面又有一个国家,相当于国中国一样,你不管我,我不管你。
在这里插入图片描述
如果在proc,也就是局部里面想要调用一下全局的变量的值,就在局部前面声明为global,好比要在里面的小国家借用大国家的东西,就需要在自己小国家,声明这个变量是全局的,所有国民都可以用。
在这里插入图片描述

TCL中的特殊参数形式;

没有任何参数的过程, 或者缺省参数

proc add {} {expr 2+3}

上面,我就不提供任何参数,当我敲击add的时候就直接返回5
在这里插入图片描述
或者说我们可以设置一个default值
在这里插入图片描述
如上图所示,var2的默认值是2,var3的默认值是3 var1没有设置默认值

可变个数的参数

在这里插入图片描述
上图包含的知识比较多,一个是proc的用法,以及args的用法,另外还有foreach的用法。
args就是一个关键词变量,代表一个list,但是这个list里面的东西我不知道,反正就是一个可变的list类型的变量值。
因此
定义一个过程叫add的过程,然后,参数有va1 和一个list参数,具体有多少个,我不知道。以后看到args就应该知道这个是一个可变的list变量。
然后set 局部变量sum等价于val1
开始执行foreach,变量为i,每次i从args这个list变量里面取一个值,就执行一下body的执行体,将args里面的值赋值给sum变量,最后返回最终的sum
然后自己推一下,就知道上面为什么等于2和20了。
感谢,参考:https://www.cnblogs.com/chip/p/5866689.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值