在TCL,变量声明没有概念。当遇到一个新的变量名,TCL将定义一个新的变量。
变量的名称可以包含任何字符和长度。甚至可以存在空格被封闭在大括号中的变量,但不建议这样做。
set命令用于指定值的变量。set 命令的语法是:
set variableName value变量的几个例子如下所示。
#!/usr/bin/tclsh set variableA 10 set {variable B} test puts $variableA puts ${variable B}
当上述代码被执行时,它会产生以下结果。
10 test
正如可以在上面的方案看到,$variableName 用于获取变量的值。
TCL是一种动态类型语言。变量的值可以在需要时被动态地转换为所需的类型。例如,一个数字5,其被存储为字符串将做的算术运算时被转换为数字。它如下所示。
#!/usr/bin/tclsh set variableA "10" puts $variableA set sum [expr $variableA +20]; puts $sum
当上述代码被执行时,它会产生以下结果。
10 30
正如在上面的例子中看到,expr是用于表示数学表达式。 Tcl默认精度为12位。为了得到浮点运算的结果,我们应该增加至少一个十进制数字。一个简单的例子说明了上述情况。
#!/usr/bin/tclsh set variableA "10" set result [expr $variableA / 9]; puts $result set result [expr $variableA / 9.0]; puts $result set variableA "10.0" set result [expr $variableA / 9]; puts $result当上述代码被执行时,它会产生以下结果。
1 1.1111111111111112 1.1111111111111112
在上面的例子中,可以看到三种情况。第一种情况,被除数和除数是整数,得到一个整数作为结果。第二种情况,除数是小数以及第三种情况,分数是一个十进制数。在第二和第三情况下,得到的是十进制数作的结果。
在上面的代码,可以使用tcl_precision特殊变量改变精度。它如下所示。
#!/usr/bin/tclsh set variableA "10" set tcl_precision 5 set result [expr $variableA / 9.0]; puts $result
当上述代码被执行时,它会产生以下结果。
1.1111