注釋與續行

  • 2019 年 10 月 31 日
  • 筆記

Tcl中的注釋符為井號#,但井號#的位置是有所講究的,即它必須位於命令的第一個字元。從這個角度而言,Tcl的注釋和命令處於同一層次,這意味著一個注釋要佔用一個命令位置。看一個簡單的例子。在這個例子中,第一條注釋獨自佔據一行並以#開始,因此該注釋是合法的;第二條注釋儘管和set命令在同一行,但set命令後緊隨分號,表明命令結束,故該注釋也是合法的;第三條注釋中,#出現在set命令中間,並不是命令的第一個字元,而被當做set命令的一部分,從而造成set命令參數設置不合理。

如果在注釋語句中出現了反斜杠,那麼即便另起一行,該行仍被認為是注釋的一部分。如下圖所示。

如果需要注釋掉大段的程式碼塊,可採用如下三種方法。

方法1:採用if語句

這個方法是被普遍接受的方法,如下圖所示。由於if條件判斷始終為0,故花括弧中的程式碼塊將不會被執行。

方法2:利用花括弧注釋

Tcl中花括弧如果用做參數分組,則其內部置換均被阻止,故可利用此特性實現大段程式碼塊的注釋,如下圖所示。

方法3:利用過程proc

Tcl中的proc類似於C語言中的函數,只有當函數被調用時,該函數才會被執行。同樣地,只有該過程proc被調用,才會被做為命令去執行。如下圖所示。commented_out沒有參數(過程名後的花括弧為空),且該過程在後續腳本中沒被調用,從而達到了注釋的目的。

上述三種方法最終執行的結果如下圖所示,可以看到x的值時鐘是100,同時y並沒有被賦值,從而驗證了該方法的有效性。

Tcl中採用反斜杠可實現續行。需要注意的是反斜杠後面同一行不能跟隨任何字元包括空格和製表符,否則續行功能將無效。如下圖所示。第一個反斜杠後直接回車換行,故變數a的值即為hello;第二個反斜杠後有空格,變數x被賦值為空格,此時反斜杠起到置換的作用,而不是續行的功能。

結論:

-Tcl中的注釋需要以#開始,且#應位於命令位置的第一個字元

-Tcl中的續行通過反斜杠來實現,但反斜杠後不能跟其他字元