Tcl -- info

info -- Return information about the state of the Tcl interpreter

返回Tcl解释器的一些状态信息。

先来看一段简单的代码,再来一一解释。

我用的是VMWare上面安装的Ubuntu环境,tclsh是自带的。

apuser@fangjunxuubtpc:~$ tclsh
% proc add {x y} {
	set z [expr $x+$y]
	return $z
}
% add 3 7
10
% info args add
x y
% info body add

	set z [expr $x+$y]
	return $z

% info cmdcount
630
% info exists x
0
% info default add x def
0
% info hostname
fangjunxuubtpc.spreadtrum.com

首先输入tclsh切换到tcl解释器界面。

1)定义一个名叫add的过程proc。将两个参数相加并返回。

2)add 3 7调用函数add,并传入参数3和7,返回10.

3)info args add 输出add的参数

语法是:add args procname

返回一个列表,列表中是procname的参数,procname必须是一个过程的名字。

4)info body add 输出过程add的主体

语法是:info body procname

返回procname所指定的过程的主体,即参数后面花括号里面的部分。

5)info cmdcount

返回Tcl解释器目前调用的所有命令的数目。

6)info exists x

判断变量x是否存在上下文之中,它在proc add中,但是在外部是不可见的,所以输出0.

7)info default add x def

语法是:info default procname arg varname

procname 是过程名。

arg 是上面的过程对应的一个参数名

--- 如果arg没有默认值,则返回0.

--- 如果arg有默认值,返回1,并将arg的值传给varname,即将varname的值替换为arg的默认值。

函数参数的默认值一般是参数列表的后面(我的理解是:有一个参数有默认值,则在它的后面的参数都要有默认值)

apuser@fangjunxuubtpc:~$ tclsh
% proc sub {x {y 1}} {  #参数y的默认值是1
	set z [expr $x-$y]
	return $z
}
% sub 10
9
% set i 5
5
% info default sub y i  ;#将y的默认值赋给i,此时i的值是1
1     ;#返回的1值表示sub的参数y存在默认值
% puts $i
1
% info default sub y def  ;#将y的默认值赋给def,因为def之前没有声明过,则此时定义并赋值为1
1
% puts $def
1

8)info hostname

返回调用该命令的主机名。

% set a 10
10
% info exists a
1
% set i 0
0
% proc loop {} {
	global i
	puts "loop level:[info level]"
	if {$i < 6 } {  
	    incr i
	    loop
	}
}
% loop
loop level:1
loop level:2
loop level:3
loop level:4
loop level:5
loop level:6
loop level:7

使用 [ info level ] 取得目前的 level 层次. Tcl 中的 global 命名空间是所有的 Tcl 程序中预设的.

因此它是的层次是 "0". 每次调用loop 的时候, 它的层次就会增加1.


 

 


 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值