close

韓語翻譯
檔和路徑操作是跨平臺情況中具有挑戰性的問題。對於主機 OSTcl 利用 UNIX 路徑名(缺省環境下,用‘/’字元分隔)和本機路徑名構造。即便當程式內的資料構造正確時,也很難確保用戶輸入與系統需求匹配。file join 號令用於將 UNIX 花式轉換成本機路徑名。其他路徑字串號令包括 file splitdirnamefile extensionnativenamepathtype tail
% set Phrase "hello, world!"
字元 用作
% if [catch {open foo r} Chan] {
-o* {set Optimize 1}

0
set Result [eval $Operation]

upvar
命令供給將局部變數與另外一個感化域中變數的值相幹聯的舉措措施。這答應根據名稱將變數挪用進進程,這對於當過程需要可以點竄在另外一個感化域的值而不單單使用它時,就顯得特別很是便利。這個命令語法是 upvar level $VarName LocalVar ,此中 level 是到當前作用域以外的步調數。“#0”表示全局作用域這一層。
TCL
說話(三)
puts stdout "Wrong argument count!"
proc circum {

./hello3.tcl on X Display :0.0
~/tcltk$ ./maths.tcl 3 4 5
\ char
反斜杠替代

所利用的 rename 饬令正如它的字面含義一樣,為現有號令或進程供給新名稱翻譯利用 rename 有兩個明明的緣由。第一個緣由是,經由過程重定名原有進程,然後用溝通名稱的過程替換它,來給現有饬令添加功能。進程可以調用原進程,必要時可以添加一些需要的功能。利用 rename 的第二個緣由是,映射一個不存在的饬令,例如,象 rename exec {}; 一樣,可以防止用戶履行外部命令。

Tcl
運算符和數學函數
#!/usr/bin/tclsh
% string wordend $Phrase 7
左側這個示例中,在將 uData 聲明為總體變數後,代碼履行檢查,以查看帳戶是不是已不存在。如果存在,則過程返回(非零)毛病動靜。這個返回可以用於切換到生成錯誤文本輸出。對於本例,我們簡單地供給三個連續輸入,個中包羅一次重複輸入。這會產生如示例底部所示的輸出,“1”表示由於一個反複的帳戶名稱而引發的一個錯誤返回,這是我們成心這樣做的。
}
Tcl
總體變數和反斜杠替代

hello翻譯社 world!
路徑和檔



~/tcltk$ tclsh
~/tcltk$ ./protest.tcl
if/then/else/elsif
已在前面幾屏中演示過。在正式語法中會用到 then,但通常會省略掉它翻譯


Tcl
中的迴圈和分支
% puts stdout $d

TCL說話
set Area [expr $PI*$Rad*$Rad]
% string match ello $Phrase
TCL
說話(八)
列表在 Tcl 中有兩個首要用處。我們已在經由過程 foreach 饬令(在 Tcl 中的迴圈和分支中找到)處理命令行引數的情況中看到第一個用處。第二個用處是動態地構建 Tcl 號令的元素,可以在本教程後面看到利用 eval 號令來履行這種用處翻譯
示意資訊的 string 號令是 length bytelength(可以有所分歧,這取決於字元集)。返回布林值(1 0)的比力是 compareequal match。這裏的模式匹配是由檔案名替代(簡單類型的匹配通常與外殼操作相關)完成。還可以經由過程奇特的 regex regsub 命令來利用高級正規運算式翻譯

Sun Mar 25 13:52:19 PST 2001

The answer to everything is 42!
Hello, world!
# global scoping briefly

TCL
說話(六)

\xddd...
十六進位值

% file join /$dir1 dir2 dir3
puts stdout {Hello翻譯社 World!}



% set Person $People(friend)
default {
***
set Verbose 0
% gets $Chan
TCL
說話(七)
正如一般的變數一樣,利用 set 饬令初始化陣列,如左側所示翻譯圓括號內是給出的下標部分。請注意,圓括號不象花括弧或雙引號那樣供應分組。一旦初始化為陣列,就不克不及將變數作為單一變數來接見翻譯如左側列表底部所示,陣列元素也能夠是列表翻譯
file3
{ string }
不帶替代的援用
Tcl
字串和模式匹配
在它扮演的東西節制語言腳色中,Tcl 有許許多多種內部檔測試和操作功能。每條命令都以 file 起頭,正如 file exists name 中一樣。其他測試敕令(它們都返回布林值)包括 executableisdirectoryisfileownedreadable writable

除簡單的多維陣列之外,每每建議用已專門用於過程介面的陣列來實現 Tcl 資料佈局。從佈局的使用者角度來看,雖然這類設計隱藏了具體實現細節,但供應了履行重要的毛病檢查能力。


puts stdout {Hello, World! \a}

左邊這個示例使用了個中一些運算符和函數來計算指定點到原點之間的距離,並返回給定半徑的圓的周長和面積。別的,在這個示例中,使用列表下標(lindex)號令來訪問 $argv 的個別元素。

set Pints 6
{Bob Carol} {Ted Alice}

# Demonstrate operators and


\b
退格


incr $j
0
TCL
說話(四)
while {[gets stdin Line] >= 0} {
Sun Mar 25 13:51:59 PST 2001
friend boss spouse
set Dist [expr sqrt(($X*$X)+($Y*$Y))]
~/tcltk$ cat maths.tcl
0
在接下來的幾屏中,將回首 Tcl 說話的一些首要特征,從元字元和整體變數到運算符、數學函數和核心敕令翻譯畢竟,這些命令使 Tcl/Tk 成為有特點的,逐漸成長的說話翻譯請記住,在本教程中沒有篇幅觸及每條號令翻譯這裏只凸起一部門,以後您可以更進一步瞭解 Tcl/Tk翻譯
\f
換頁
~/tcltk$ ./datas.tcl

foreach Arg $argv {

% set d [exec date]
/home/dir2/dir3
home
#!/usr/bin/tclsh

}

puts stdout [UserAdd bpb Brian bilbrey@junk.com 555-1212]
} else {

% set dir3 tcltk
在這個示例中,您可以感到 eval 號令的壯大功能。在正常環境下,Tcl 註釋器以一遍體例(one-pass)操作:它起首對輸入的號令行(可能延長在幾個物理行上)進行解析,並執行任何替換。然後入手下手執行,除非找到不正常或殘破命令。eval 允許第二遍體例(second pass)(也許更精確地講,是預經由過程(pre-pass))。因而,可以先動態構造 Tcl 號令,然後進行解析並履行它。
% set People(friend) [concat $People(friend) Bob]
# Demonstrate procedures and
puts stdout "$argv0 on X Display $env(DISPLAY) "
理解 Tcl 陣列的捷徑是,將它們視作與 Perl 散列相同的工具翻譯Tcl 陣列不是用數位豎立下標的線性資料結構,除非選擇對資料強加那種诠釋。儘管帶空格的字串需要用引號括起或需要一個變數援用,但下標(或鍵)可所以任何字串翻譯
puts stdout "Needs X, Y, and Radius"




1
return 1
~/tcltk$ tclsh

puts stdout "Hello, World! \a"
~/tcltk$ ./hello3.tcl ring
# using procedural wrappers

#!/usr/bin/tclsh

set i 1 ; set j 10
set LineCount 0

Tcl tick
的構成
set Y [lindex $argv 1]

%
#!/usr/bin/tclsh

Distance = 5.0
Tcl
列表
set uData($Acct,phone) $phone




the circumference is 18.8495559215.
tcltk
hello, world!
% string totitle $Phrase
% file pathtype ./hello3.tcl

if {$Arg == "ring"} {

return 0
puts stdout "$Op = $Result "
puts stdout "Area = $Area"
ewline 新行

其他一些有效的列表饬令及其語法是:

% set dir2 brian
foreach Arg $argv {

1
% while {[gets $InFile Op] >= 0} {
Two

0
******

#

1
Address: 192.168.1.3#53

% gets $Chan

Tom Bob


puts stdout "The answer to the universe is [eval $Pints * $Days]! "
if {$argc >= 1} {
Name(j,k,l...) 多維陣列
set Pints 6
incr LineCount

1 + 2 = 3

4 + 5 = 9

7 - 9 = -2

%

exec
命令用於顯式地履行外部命令。在 Linux 下,當 Tcl 處於對話模式時,可以直接運行大多數外部號令,如左側示例所示。用 exec 運行時,會將程式的 stdout 輸出返回到 Tcl,而不是返回到螢幕,這允許將資料賦值給變數。當程式在後臺啟動時,當即返回的值是程式的 PIDexec 程式可以充分利用 UNIX 情況中的 I/O 重定向和管道。
Ted Alice
% set dir1 home
0

set PI [expr 2 * asin(1.0)]
固然設計之初 Tcl 陣列是一維的,但有一個類比多維構造的好方法。因為下標是隨意率性字串,所以二維陣列可以聲明以下:
set uData($Acct翻譯社email) $eMail
% set Person $People(friend)
TCL
說話(九)
******
12
另外一個功能(在受撐持的情況中)是以打開檔的方式打開管道的能力。例如,用 set Channel [open "|sort foobar" r] 打開管道通道後,第一個 gets 的輸出將是“Eight”(檔資料“One”“Ten”的輸出在 10 個零丁的行上按字母按次擺列)。
-------
puts stdout "The answer to the universe is [eval $Pints * $Days]! "

\t
程度製錶

********
# parse command line switches
Tcl
中的迴圈號令是 whilefor foreach。前提(轉移)號令是 if/then/else/elsif switch。上述饬令的限制語句是 breakcontinuereturn error翻譯最後,catch 號令供應了毛病處置懲罰能力。
  首先,Tcl是一種簡單的腳本語言,主要利用於發佈命令給一 些互交程式如文本編纂器、調試器和shell。它有一個簡單的語法 和很強可擴充性,Tcl可以建立新的進程以加強其內建敕令的能力。
% set InFile [open input01.txt r]
% nslookup orbdesigns.com
lrange $List i j —
返回列表元素的局限。
puts stdout [UserAdd tom Tom tom@junk.com 555-1212]

Tcl
進程
puts stdout [UserAdd bpb Brian bilbrey@junk.com 555-1212]
Marcia
% file exists hello3.tcl
Server: 192.168.1.3
% set c2 [list Ted Alice]
One

% array get People

lappend $List item... —
將項附加到列表。
% file delete testit~


固然該樣本演示了相對瑣細的 eval 運用程式,但從概念上講,可以根據已知語法的輸入檔的輸入,很輕易地將它擴大為動態檔和/或目錄處置,或擴展為對檔類型、許可權、訪問時候或任何種類的可測試元素的根基操作。~/tcltk$ cat hello.tcl
puts stdout {Hello, World! \a}
Tcl
元字元

\v
垂直製錶
# and backslash substitution
Name
變數(區分巨細寫)

The answer to everything is 42!
}

Bob Carol
relative

%
Tcl
中的資料結構
set array($i,$j) 3.14159
#

}
% set People(spouse) Marcia
list
饬令接受它的所有引數並將它們返回在一個列表環境中。引數可所以值或變數。在左側這個示例中,可以手工創建列表,或可將其他列表視作引數來利用列表(從而留存第一個“Party”的兩對偏向)。或,concat 敕令用於將兩個或多個列表合併到頂級項的單個實體,返回第二個更有趣的“Party”
% puts stdout $d
% string toupper $Phrase



元字元是在 Tcl/Tk 情況的上下文中有非凡含意的字元或字元對,它們包括分組語句、封裝字串、終止語句和其他,以下表所示翻譯左側列出的代碼中演示了一些元字元翻譯要注意的一個特別特征是,當利用花括弧(避免替代和擴大)代替雙引號時,輸出中的差別翻譯
***
\a
響鈴
#!/usr/bin/tclsh
在左側的樣本代碼中,利用了此中幾個變數和(又一次)使用了一些反斜杠援用的字元( \a)。 \ char 答應替代非列印 ASCII 字元。這對於 UNIX 下的許多劇本語言和外殼情況都是常見的翻譯如表中說明的那樣,對於沒有界說替代的反斜杠引用的字元只被簡單地回送到輸出。

#
# This program code shows
}
利用 file ... 敕令而不利用經由過程 exec 的本機號令的優點在於,前者會提供一個可移植介面。TCL說話(十)
Tom
return [expr $rad * $rad * $PI]

作用域規則描寫了過程和變數名和值在程式的分歧層次上的可見性。例如,在劇本的最外層定義的變數是整體變數。缺省情況下,整體變數是不可見的,在進程內部也不成用它們的值。這允許過程的編寫者自由地界說變數名並賦值,而沒必要擔心籠蓋對於局部作用域上未知的主要變數。要使整體變數在過程內部變得可見,必需將它聲明為在進程內,就象在上一屏的示例中,對 PI 使用 global 饬令那樣。
Tcl
陣列

% set c1 {Bob Carol}
puts stdout "Sorry, Dave... "
# Demonstrate Data Structures
% set d [date]


puts stdout "Hello, World! \a"
}
~/tcltk$ ./hello3.tcl
1: ring



;
newline 語句分隔符號

set Cir [expr 2*$PI*$Rad]
# filename hello2.tcl

% close $Chan
{Bob Carol} Richard {Ted Alice}
% file executable testit
其餘列表命令還包羅 lreplacelsearch lsortsplit 敕令將字串作為輸入並生成經過准確解析的列表,而且在指定的字元處斷開字串。join 執行相反操作,接管列表元素並將它們串在一路,用 joinstring 分隔它們翻譯
friend Tom boss Jack spouse Marcia


global PI
Area of circle of radius 3 is 28.2743338823,
global uData
14


TCL
說話(五)
}
算術函數是 ceil(x)floor(x)fmod(x, y)pow(x翻譯社 y)abs(x)int(x)double(x) round(x)

puts stdout "Distance = $Dist"




puts stdout "Circumference = $Cir"

# to confuse Vanna White...

1 + 2
4 + 5
7 - 9

HELLO, WORLD!

% set People(friend) Tom
Tom Bob
proc c_area {
set array($i,$j) 2.71828
變數感化域法則

set rad 3
#!/usr/bin/tclsh

#!/usr/bin/tclsh

Name(idx)
陣列變數
}
\space ("\ ")
空格
set Rad [lindex $argv 2]

  其次,Tcl是一個庫包,可以被嵌入運用程式,Tcl的庫包含了一個剖析器、用於執行內建敕令的常式和可使翻譯公司擴充(界說新的 進程)的庫函數。利用程式可以產生Tcl饬令並履行,命令可以由用戶產生,也能夠從用戶介面的一個輸入中讀取(按鈕或功能表等)。 Tcl庫收到命令後將它分解並履行內建的敕令,常常會產生遞迴的挪用翻譯
set Operation "expr $Op"
Tcl 中履行 indexlastfirstwordend wordstart 命令可以實現下標功能。字串點竄是由 tolowertouppertotitletrimtrimlefttrimrightreplace map 來處置的翻譯後者需要預先定義一個字元對應表。用 range 抽取子字串,用 repeat 屢次輸出字串。
llength $List —
返回頂級項的計數結果。

% array names People

puts stdout "Area of circle ofradius $rad is [c_area $rad]翻譯社 the circumference is[circum $rad]. "
lindex $List n —
返回已建立下標的項,從 0 起頭計數。

...
set Optimize 0

set Days 7

\
行繼續(在行尾)
puts stdout "$N: $Arg "
~/tcltk$ ./hello2.tcl
\c
回顯‘c’

rand()
srand(x) 是處置亂數的函數翻譯
Tcl
Tk 是诠釋型的、可擴大腳本說話翻譯 BSD 許可證十分相似,該許可證答應在任何情況下自由利用該軟體,只要在所有副本中保存該版權而且在任何分發中一字不差地傳遞佈告。這個許可證條目使 Tcl/Tk 成為自由軟體翻譯

Nice day, eh?
其他可能的資料佈局包孕陣列列表、已鏈結或兩重鏈結的陣列或此中的各類分列。因為 Tcl 8.0 所具有的列表重實現提供了不變的接見次數,所以陣列列表佈局相當有效。
linsert $List n item... —
在列表中的指定位置上插入一項或多項,向下移列表中的其他項翻譯

Tom
*********
% set People(boss) Jack

Sun Mar 25 13:52:19 PST 2001
set N [expr $N + 1]
HELLO翻譯社 WORLD!
\r
回車
Hello, World!

error "Unknown $Arg"
Hello, World!
~/tcltk$ tclsh
% set Party2 [concat $c1 $c2]

puts stdout "\a"

\
字元 替換
~/tcltk$ ./hello.tcl
...
Tcl
曆程和檔 I/O

switch -glob -- $Arg {
}
\ddd
八進制值
~/tcltk$ tclsh
% set Party1 [list $c1 $c2]
}
set X [lindex $argv 0]

其他進程饬令有 exit(終止正在運行的 Tcl 腳本)和 pid(返回當前或指定進程的 PID),對於出於各類目標的情況,這十分便利。Tcl 不合併任何本機進程節制敕令,但可以將 exec 號令與 PID 資料一路利用來實現很多工。


Circumference = 31.4159265359

可使用 append 命令,將文本添加到現有變數中。經由過程利用與 C 語言的 printf 號令溝通的樣式和約定,format 敕令可用來生成輸出字串翻譯scan 對字串進行解析並將值賦值給變數。最後,從 Tcl 8.0 起頭,用 binary format binary scan 命令添加了將二進位資料作為字串處置懲罰的功能(因此可以或許處置空字元,而不會失敗)。
Tcl
整體變數和反斜杠替代

" string "
帶替代的援用

Bob Carol Ted Alice
~/tcltk$ tclsh
文件把持利用下列號令:openclosegetsputsreadtellseekeof flush。如左側所示,在檔打開命令時代 catch 命令對錯誤查抄是有效的。當在遇到新的一行字元之前需要列印程式輸出時,如在用戶資料提醒符中,使用 flush 來寫輸出緩衝區。
~/tcltk$ ./hello2.tcl

if {[info exists uData($Acct,rname)]} {
***
set uData($Acct,rname) $rName
set N 1

更多 Tcl 陣列
#


global PI

Hello, World!
% string match *ello* $Phrase

Hello翻譯社 World! \a
-v* {set Verbose 1}
這些陣列鍵現實上離別只是字串“1翻譯社10”“1,11”,但對接見資料來講,誰知道這之間的差異?

#
eval 用於動態劇本
Hello翻譯社 World! \a
array
命令是一種多用處對象,很象 stringarray exists 敕令用於測試變數是不是作為陣列存在,array get 用於將陣列轉換成列表花式,array set 用於將列表轉換為陣列,array names 用於返回下標列表,array size 用於返回對下標進行計數的成效翻譯搜刮全部陣列有它自己的一組四個敕令:array startseacharray anymorearray nextelement array donesearch翻譯
Area = 78.5398163397
~/tcltk$ tclsh


Jack
Address: 64.81.69.163
}
# This program code shows
\
反斜

# Demonstrate global variables

if {$argc == 3} {
在左邊的列表中,輸入檔由三行組成,每行都顯示了一種算術運算。挪用 tclsh 後,檔以唯讀體式格局打開並與 $InFile 變數相關聯。while 迴圈每次將一行讀入到 $Op 中。然後,經由過程預先計畫將 expr 映射到 $Op 變數來構造全部 Tcl 敕令。然後,擴大,求值,從而分派成果。最後,在 stdout 上顯示每步操作和後果。
Name: orbdesigns.com
% linsert $Party1 1 Richard
# math functions
return [expr 2.0 * $rad * $PI]
}




鄙人面的清單中,將會發現第一個很常見的示例程式,它是用 Tcl 實現的。這是一個完全的劇本:第一行饬令調用 tclsh 情況,第二行敕令執行實際工作翻譯用您所選擇的文本編纂器建立該劇本,輸入 chmod +x hello.tcl 使之成為可履行檔,然後履行它以測試您這件作品
} else {

# metacharacter usage
# metacharacter usage
return LineCount
% string toupper $Phrase
Remove_Vowels $Line $Optimize $Verbose

TCL
語言(六)

#
注釋
TCL
語言(二)
%
~/tcltk$ cat input01.txt
在左側這個示例中,foreach 結構給 switch 饬令供給饬令行引數。當處置引數時(注意:不准確的輸入會終止劇本,因為還沒有實現處置懲罰毛病的 catch),while 迴圈經由過程為每一行調用進程並同時對行計數器加 1 來處置懲罰輸入。代碼段竣事時,返回處置的行數。
% append Phrase "Nice day翻譯社 eh?"
Tcl/Tk 劇本起頭運行時,存在幾個整體變數(若是在當前情況中為非空,則是預先界說的)翻譯這些變數允許以下對作業系統進行接見:argc 是對劇本引數的計數,而不是對換用的名稱進行計數翻譯 argv 是引數的列表(不是陣列)翻譯argv0 是挪用的檔案名(可所以符號鏈結)翻譯env 是按照當前外殼的情況變數名建立下標的陣列翻譯errorCode 存儲有關比來的 Tcl 錯誤資訊,errorInfo 包含對這統一個毛病事宜的堆疊跟蹤翻譯該列表還有別的 12 tcl_xxx 變數,從 tcl_interactive tcl_version翻譯可以在 Tcl/Tk in a Nutshell 中找到好的總結,(有關更多資訊,請參閱本教程末尾的參考資料)。
Tcl
支援一組標準的運算符和數學函數。這些運算符包羅算術、位元和邏輯運算符,可以經由過程 expr 饬令利用常規的運算符優先順序法則進行求值翻譯別的,斟酌到 Tcl 的實質是面向字串的劇本語言,所以對一些數學函數進行了公道的補充:

Tcl
是一種很通用的劇本語言,它幾近在所有的平臺上都可以诠釋運行,功能壯大翻譯tool command language的縮寫,發音為 "tickle” 現實上包括了兩個部份:一個說話和一個庫。
% eof $Chan






三角函數包括 cos(x)acos(x)cosh(x)sin(x)asin(x)sinh(x)tan(x)atan(x)atan2(y, x)tanh(x) hypot(x翻譯社 y)。與這些函數相幹的單位是弧度。
brian
%

proc UserAdd { Acct rName eMail phone } {
Log
函數是 exp(x)log(x) log10(x)翻譯
}
字串是 Tcl 中的根基資料類型翻譯string 敕令現實上是一組饬令,這些命令都是屬於 string 的。在使用中,正如在左側的示例中所看到,string 讀取的體式格局非常象來自 OOP 編程特定物件方式的運用程式翻譯
}
NICE DAY, EH?

Tcl/Tk
是一種註釋型情況翻譯可以通過添加預編譯的 C 函數來擴展 Tcl 解釋器,可從 Tcl 環境內部挪用 Tcl 解釋器翻譯可以為特定目標或一般的和普遍利用的而定制這些擴大翻譯天成翻譯公司們將在教程的後面看一些擴大並著重看一下第一個擴大非常風行的 Expect翻譯
檔資訊和操作(再提示您一次,所有都是以 file 入手下手)是經由過程 atimeattributescopydeletelstatmkdirmtimereadlinkrenamerootname本文引用自: https://blog.xuite.net/joy613/wow/6207051-TCL%E8%AA%9E%E8%A8%80有關各國語文翻譯公證的問題歡迎諮詢天成翻譯公司02-77260931

arrow
arrow
    文章標籤
    翻譯社
    全站熱搜

    verav3313t0 發表在 痞客邦 留言(0) 人氣()