Tcl
站点
官方站点
教程站点
基本知识
下载安装 Activestate ActiveTcl 8.6.1.0
执行 tclsh 可以执行指定的 tcl 脚本
直接执行 tclsh 不带参数进入交互式命令环境
输入 info commands 可以列出当前已知的所有命令
执行 wish 命令可以打开一个特殊的 tcl shell 用于开发窗体应用
补充知识
TkCon 是 Jeff Hobbs 写的另一个解释器
Eclipse IDE 也可以支持 Tcl
需安装 DLTK 扩展
支持 Tcl 的 IDE 列表
支持 Tcl 的源码编辑器
基本的文本输出
puts 命令
puts HelloWorld
puts "Hello World"
puts {Hello World}
引入知识
字符串的定界问题
裸字符串
双引号定界
花括号定界
分号的作用
注释
同行注释时容易犯的错误
puts "Hello World" ;# some comments
正确
puts "Hello World" # some comments
错误
赋值到变量
set 命令
set a 100
第一个参数是变量名
可以是单词
可以是 array 成员
第二个参数是值
内部步骤
在内存中将变量名指向值所在内存
返回值
set a
当只有一个参数时本命令返回该参数的内容
set 范式
set varName value
如果 value 出现了则将 varName 的值设置为 value
varName 判定
只由 alphanumeric 字符组成且无括号
判定为 scalar variable
形如 varName(index)
判定为 associative array 的 member
引入知识
Tcl 中一切都是字符串
但是在解释器内部却可能分为 list, integer 等其他类型
set X 100
puts $X
$ 符号提示 Tcl 使用 x 的值
这里涉及到 Tcl 传递数据给 subroutines 的方式
传递 name
传递 value
重要
Commands that don't change the contents of a variable usually have their arguments passed by value.
Commands that do change the value of the data must have the data passed by name.
set X 100
puts "$X"
双引号中的字符串会首先经过展开
但是在本节里并没有详细解释这一问题
疑问
scalar variable 是什么
associative array 是什么
求值与替换 1: 通过 "" 分组参数
基础背景知识
Tcl 中命令求值的两个阶段
第一阶段 执行一遍替换
第二阶段 对剩下的命令进行求值