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.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务