Tcl讀書筆記 二

2021-06-06 17:14:17 字數 1049 閱讀 2613

tcl中涉及到的三種替換:變數替換,命令替換,反斜線替換。

變數替換由符號"$"引發,將tcl變數的值插入單詞中。命令替換可以把乙個單詞的部分或全部替換為乙個命令結果。命令替換過通過方括號表示,會呼叫括號中的命令。反斜線替換用於向單詞中插入像換行符這樣的特殊字元,以及像[,$這樣的會被tcl解析器認為是有特殊含義的字元。

tcl中涉及到的幾種引用:雙引號引用和大括號引用。

其中雙引號取消其中的單詞和命令分隔符的特殊解釋,大括號取消其中所有特殊字元的特殊解釋。如果乙個單詞包含在雙引號中,那麼其中的空格、製表符、換行以及分號都作為普通字元處理。大括號提供了更徹底的引用形式,它會取消其中所有特殊字元的特殊意義。如果乙個單詞以左大括號開頭,那麼直到與它配對的右大括號為止,所有字元都將被原封不動地識別為這個單詞的值。這個單詞中不會發生任何替換,所有的空格、製表符、換行符以及分號都作為普通字元處理。

引數展開:在某些情況下,單層替換規則有害無益。例如:

file delete [glob *.txt]

golb命令返回的是符合*.txt形式的檔名列表,例如a.txt,b.txt。然而,整個檔名了表是作為乙個引數傳遞給file delete的,file delete會因為找不到名為a.txt,b.txt的檔案而失敗。要想file delete正常工作,glob的結果必須被正確分割為多個單詞。可以通過引數展開來實現。如

file delete [glob *.txt]

在由tcl直譯器進行解析和引數展開後,與下面這條語句相同:

file delete a.txt b.txt c.txt

也可以用eval命令:

eval file delete [glob *.txt]

關於異常以及錯誤返回,其中全域性變數errorinfo十分有用。出現錯誤後,tcl會把errorinfo設定為乙個棧,儲存產生錯誤的確切位置。我們可以用puts $errorinfo輸出這個變數的值。

tcl的兩條相關規則:

1. tcl解析一條命令時,只從左向右解析一次,進行一輪替換。每乙個字元只會被掃瞄一次。

2. 每乙個字元只會發生一層替換,而不會對替換後的結果再進行一次性掃瞄替換。

讀書筆記(二)

使用數學函式的時候,大多數需要包含標頭檔案,但是也有特例,例如處理整型數的函式abs函式被包含在標頭檔案中 三角函式和反三角函式,都以弧度為引數,而不是以角度為引數。更加詳細的數學函式可以參考c mathematical functions。維基百科 strcpy strcat函式會改變傳入的字串的...

讀書筆記二

複審 即看 是否在 規範 的框架內正確地解決了問題。形式有 自我複審 同伴複審 團隊複審。目的是 1 找出 錯誤 2 發現邏輯錯誤 3 發現演算法錯誤 4 發現潛在的錯誤和回歸性錯誤 5 發現可能需要改進的地方 6 教育 互相教育 開發人員,傳授經驗,讓更多的成員熟悉專案各部分的 同時熟悉和應用領域...

Effective Java讀書筆記二

我們在設計類的時候,有些類難免會有許多的字段 fields 而這些字段可能需要在建立物件的時候對它們進行賦值。一般我們會考慮兩種方式 使用建構函式或者使用setter方法。使用建構函式的缺點很明顯,如果我們的字段過多,那麼就會讓建構函式的引數過多,在這種情況下,不但不容易理解和閱讀,而且非常容易出錯...