在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