TCL 程式控制

2021-10-01 05:03:59 字數 1825 閱讀 3622

for

for start test next body

for是乙個與c語言中for結構類似的迴圈命令。start、next和body必須是tcl命令字串,test是表示式字串。for命令首先呼叫tcl直譯器來執行start進行一些初始化操作。然後將test做為表示式進行評估。如果評估結果非零,則呼叫tcl直譯器執行body,然後呼叫直譯器執行next,然後重複以上步驟,直到test表示式評估結果為零。如果在body中呼叫了continue命令,則跳過當前body中continue後面的命令,進入下一次迴圈。如果在body中調動了break命令,則終止for迴圈命令。for迴圈命令返回乙個空字串。

for

for迴圈中的test表示式必須要用大括號包圍起來,否則會在for迴圈之前首先進行變數替換,這會導致test表示式無法感知到變數的變更,從而導致迴圈不執行或者無限迴圈。當test表示式被大括號包圍起來,會使變數替換延遲到表示式求值時,從而能偶感知變數的變更。具體是無限迴圈還是迴圈不執行,取決於變數替換後表示式的值。如果值為非零則會無限迴圈,否則迴圈不執行。

foreach

foreach varname list body

foreach varlist1 list1 ?varlist2 list2 ...? body

foreach迴圈命令可以迴圈乙個或多個列表中的值。在迴圈時,list中的元素會像使用lindex命令一樣從前到後依次分配給varname,然後呼叫tcl直譯器執行body中的命令。

set values

foreach value $values

foreach還可以同時迴圈多個列表。每個列表都有乙個與之對應的迴圈變數。在每次迭代時都會將list中的值分配給對應的varlist。list中的每個值會按順序使用一次。最大迭代次數為list的最大元素數,從而保證list中的值一地你給會被迭代一次。如果列表中的值已經分配完畢,但是迴圈未結束,則使用空字串填充對應的迴圈變數。

set values

set numbers

foreach number $numbers value $values

list中的值每次可以迭代多個,只需要將varname指定為乙個變數列表。每次迭代時會從list中取出列表中變數數量個值,依次分配給變數列表中的變數。當list中元素數量不足時會用空字串填充變數。

set numbers

set values

foreach $values

foreach number $numbers $values

while

while test body

while命令首先計算test表示式的值,如果為true,則呼叫tcl直譯器執行body中的命令。執行完body中命令後,會再次計算test表示式,重複以上步驟直到test表示式為false為止。如果在body中呼叫了continue命令,則跳過當前body中continue後面的命令,進入下一次迴圈。如果在body中調動了break命令,則終止while迴圈命令。while迴圈命令返回乙個空字串。

set x 0

while

與for命令一樣,test表示式必須用大括號包圍起來。否則while迴圈會不執行或者無限迴圈。

break

通常用於迴圈結構for、foreach、while中提前終止break所在迴圈。

set x 0

while else

incr x;

}continue

通常用於迴圈結構for、foreach、while中提前結束本輪迴圈。

set x 0

while

puts $x;

incr x;

}

TCL語言筆記 TCL基礎語法

tcl 全稱是 tool command language。它是乙個基於字串的命令語言,基礎結構和語法非常簡單,易於學習和掌握。tcl 語言是乙個解釋性語言,所謂解釋性是指不象其他高階語言需要通過編譯和聯結,它象其他 shell 語言一樣,直接對每條語句順次解釋執行。tcl 資料型別簡單。對 tcl...

初識Tcl(十一) Tcl 命名空間

目錄 建立命名空間 巢狀的命名空間 匯入和匯出空間 忘記命名空間 命名空間是乙個容器組識別符號,用於組變數和程式。命名空間可從tcl 8.0版開始使用。引入命名空間之前,有乙個全域性範圍。現在有了命名空間,我們可以分割槽全域性範圍。使用命名空間命令建立命名空間。乙個簡單的例子,建立命名空間如下圖所示...

TCL語言筆記 TCL中的String命令

字串是 tcl 中的基本資料型別,所以有大量的字串操作命令。乙個比較重要的問題就是模式匹配,通過模式匹配將字串與指定的模式 格式 相匹配來進行字串的比較 搜尋等操作。命 令 說 明 string bytelengthstr 返回用於儲存字串的位元組數。string compare?nocase?le...