SayCoo論壇

標題: TCL 語法 [打印本頁]

作者: jianyi    時間: 2007-1-2 21:34
標題: TCL 語法
命令格式在Tcl裡每一條直譯器可以理解的"命令"加"參數"型式,它的語法模型很簡單,通常是一個命令後面加好幾個參數,如:
  
  命令 [參數 1] [參數 2] [參數 3] [參數 4] ...... [參數 N]
以下為 Tcl 語法裡的一些特殊符號和意義:
變數Tcl使用弱定義型態的變數方式,它的特色包含如下:
在 Tcl 裡,變數名稱的取法也沒有任何限制,所以可以使用任何字元來為變數命名,甚至變數名跟指令名稱相同也沒問題。使用時只有一點要注意的,就是 TCL 是大小寫有別的語言。而 TCL 以 set 指令來設定變數值,如:
unset 指令用來刪除一個或多個變數,來釋放記憶體空間,如:
而TCL 的 set 指令除了設定變數值的用途外,也可以用來取出變數的內容,請先下指令 tclsh 進入 tcl 的直譯器,然後輸入下列指令:
JYL@JYLDesktop ~
      $tclsh
       %set pi 3.14 #設定變數 pi 的數值為 3.14
      3.14
       %set pi #取出變數 pi 的內容
      3.14
       %set pii #取出變數 pii 的內容,因為並沒有 pii 這個變數,因此會顯示:can't read "pii": no such variable
      can't read "pii": no such variable
       %
另外一個好用的指令為 info exists,我們可以使用 info exists 指令來檢查變數是否存在。例如在使用 incr 指令時,變數必須先建立才能為變數進行加法運算。此時便可使用 info exists 先檢驗變數的存在:
if {![info exists counter]} {
      set counter 0
      } else {
      incr counter ;# counter 加 1
      }
TCL 在執行時會建立一些全域變數,可以利用 info global 列出有哪些全域變數:
JYL@JYLDesktop ~
      $tclsh
      %info global
      tcl_rcFileName tcl_version argv argv0 tcl_interactive auto_oldpathauto_path errorCode errorInfo auto_index env tcl_patchLevel argctcl_libPath tcl_platform tcl_library
      %
請注意喔,這裡請先下指令tclsh進入tcl的直譯器,之後再下info global指令列出全域變數,以下為幾個比較常用的變數意義:
可以在退出 tcl 直譯器之後將以下程式碼存成 tcl 檔,然後執行此程式將以上的變數內容印出來,如:
  程式內容(下載):
puts "============start of some global variable============="
      puts "\$argc=$argc"
      puts "\$argv0=$argv0"
      puts "\$argv=$argv"
      puts "\$tcl_version=$tcl_version"
      puts "\$tcl_rcFileName=$tcl_rcFileName"
      puts "\$tcl_interactive=$tcl_interactive"
      puts "\$auto_path=$auto_path"
      puts "\$errorCode=$errorCode"
      puts "\$errorInfo=$errorInfo"
      puts "\$tcl_patchLevel=$tcl_patchLevel"
      puts "\$tcl_libPath=$tcl_libPath"
      puts "\$tcl_library=$tcl_library"
      puts "============start of some global variable============="
執行結果:
JYL@JYLDesktop ~
      $tclsh TclTk_0002_0005.tcl
      ============start of some global variable=============
      $argc=0
      $argv0=ns2_0002_005.tcl
      $argv=
      $tcl_version=8.4
      $tcl_rcFileName=~/tclshrc.tcl
      $tcl_interactive=0
      $auto_path=C:/cygwin/usr/share/tcl8.4 C:/cygwin/usr/share C:/cygwin/lib
      $errorCode=
      $errorInfo=
      $tcl_patchLevel=8.4.1
$tcl_libPath=C:/cygwin/share/tcl8.4 C:/cygwin/share/tcl8.4C:/cygwin/usr/share/tcl8.4 C:/share/tcl8.4 C:/cygwin/library C:/libraryC:/../tcl8.4.1/library
      $tcl_library=C:/cygwin/usr/share/tcl8.4
      ============start of some global variable=============
TCL 的數學運算子




歡迎光臨 SayCoo論壇 (https://family.saycoo.com/) Powered by Discuz! X3.3