by Brent B. Welch About the author: Brent Welch 正在开发www.scriptics.com站点, 包括一个Tcl有关的统一资源定位(Tcl资源中心)注释数据库 和TclPro产品的ecommerce infrasturcture.同时,他还在开发几个大型的 Tcl/Tk程序,有运行于www.scriptics.com站点上的Tcl Httpd web 服务器, 有Exmh 邮件用户界面和webtk HTML 编辑器.另外,他还编写了 <<使用 Tcl 和 Tk 熟练编程> >. Welch1982年在科罗拉多州Boulder大学宇宙航空工程 专业获学士学位,1986年在加州Berkeley大学计算机专业获硕士学位, 1990年在加州Berkeley大学计算机专业获博士学位。开始,Welch是施乐公司 帕洛阿尔托研究中心的研究员,研究分布式系统。后来,他加入太阳微系统 实验室,成为Tcl/Tk小组成员。他还是美国计算机协会和电气和 电子工程师协会成员。主页地址:http://www.beedub.com/ Content: |
Abstract:
本文介绍了Tcl语言的语法和基本内容.
作为一种脚本语言,Tcl具有简单的语法.
cmd arg arg arg
$foo
foo
.
[clock seconds]
"some stuff"
{some stuff}
\
下面是Tcl中打印当前时间的命令. 它使用了三条Tcl命令
: set
, clock
, 和 puts
.
set
命令给变量赋值. clock
命令生成时间值
. puts
命令打印结果.
set seconds [clock seconds] puts "The time is [clock format $seconds]"
注意在给变量赋值时并未使用$符号.
只有在使用变量时才使用$符号.在上个例子中,
seconds
变量并不是必须的.
你能使用一句命令打印出当前时间:
puts "The time is [clock format [clock seconds]]"
Tcl解析Tcl语法是通过以下三步: 参数分组, 结果替换和命令分派.
puts
命令的一个参数.
$foo
的值替换了foo
,
用结果替换了括号命令. 替换是在分组之
后 后进行的. 这种次序使
特别的值并未使命令结构变复杂.
下面是另一个例子:
这里, 大括号用来参数分组, 并没进行任何替换. Tcl语法解析知道set i 0 while {$i < 10} { puts "$i squared = [expr $i*$i]" incr i }
while
命令没有特别的地方,象对待其它命令一样.
while
命令的执行程序知道第一个参数是表达式, 第一个参数是多个Tcl命令
.
大括号把它分成两个参数:逻辑表达式控制循环,命令在循环部分
.
我们看到了两个数学表达式: 逻辑比较和乘法计算.
while命令自动计算第一个参数值.
在其它场合时,你要明确使用
expr
命令来执行数学计算.
最后,Tcl调用程序执行复杂的工作. 我们可以看到Tcl
使用 expr
命令来执行数学运算, puts
命令来执行输出功能, set
命令来给变量赋值.
这些Tcl命令,是通过已在Tcl中注册
的C语言程序来执行的. C语言程序调用Tcl命令传来的字符串参数,
然后传回结果字符串. 写C语言程序并不复杂,
而且可以做任何事情,包括访问数据库和建立图形界
面. Tcl语言, 并不清楚命令会做什么
, 它只是进行参数分组, 结果替换和命令分派
.
这是一个阶乘程序:
proc fac {x} { if {$x < 0} { error "Invalid argument $x: must be a positive integer" } elseif {$x <= 1} { return 1 } else { return [expr $x * [fac [expr $x-1]]] } }
中文翻译:大明
Webpages maintained by the LinuxFocus Editor team
© Brent B. Welch LinuxFocus 1999 |
1999-09-27, generated by lfparser version 0.6