在TCL,變量聲明沒有概念。當(dāng)遇到一個(gè)新的變量名,TCL將定義一個(gè)新的變量。
變量的名稱可以包含任何字符和長度。甚至可以存在空格被封閉在大括號(hào)中的變量,但不建議這樣做。
set命令用于指定值的變量。set 命令的語法是:
set variableName value
變量的幾個(gè)例子如下所示。
#!/usr/bin/tclsh
set variableA 10
set {variable B} test
puts $variableA
puts ${variable B}
當(dāng)上述代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果。
10 test
正如可以在上面的方案看到,$variableName 用于獲取變量的值。
TCL是一種動(dòng)態(tài)類型語言。變量的值可以在需要時(shí)被動(dòng)態(tài)地轉(zhuǎn)換為所需的類型。例如,一個(gè)數(shù)字5,其被存儲(chǔ)為字符串將做的算術(shù)運(yùn)算時(shí)被轉(zhuǎn)換為數(shù)字。它如下所示。
#!/usr/bin/tclsh set variableA "10" puts $variableA set sum [expr $variableA +20]; puts $sum
當(dāng)上述代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果。
10 30
正如在上面的例子中看到,expr是用于表示數(shù)學(xué)表達(dá)式。 Tcl默認(rèn)精度為12位。為了得到浮點(diǎn)運(yùn)算的結(jié)果,我們應(yīng)該增加至少一個(gè)十進(jìn)制數(shù)字。一個(gè)簡單的例子說明了上述情況。
#!/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
當(dāng)上述代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果。
1 1.1111111111111112 1.1111111111111112
在上面的例子中,可以看到三種情況。第一種情況,被除數(shù)和除數(shù)是整數(shù),得到一個(gè)整數(shù)作為結(jié)果。第二種情況,除數(shù)是小數(shù)以及第三種情況,分?jǐn)?shù)是一個(gè)十進(jìn)制數(shù)。在第二和第三情況下,得到的是十進(jìn)制數(shù)作的結(jié)果。
在上面的代碼,可以使用tcl_precision特殊變量改變精度。它如下所示。
#!/usr/bin/tclsh set variableA "10" set tcl_precision 5 set result [expr $variableA / 9.0]; puts $result
當(dāng)上述代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果。
1.1111