2010-07-30 66 views
7

我這裏有代碼如何把塊註釋在TCL

proc checkPrime {no} { 
    set i 1 
    set count 0 
    while {$i < $no} { 
     if {{$no%$i} eq 0} { 
      incr count 
     } 
     if {$count eq 2} { 
      puts "the number is prime number" 
      return 
     } 
     incr i 
    } 
} 

我希望把整個過程變成一個單一的評論,我不想把與#每行, 有象Java中的任何可能性/ * .. * /所有代碼註釋,就像在TCL。 我也想要一些文字會放單註釋

+0

一對夫婦在代碼中的錯誤:使用'eq'字符串是否相等,'== '數字相等; 'if {{$ no%$ i} eq 0}'應該是'if {($ no%$ i)== 0} – 2010-07-30 08:17:15

+0

檢查數字是否爲素數的另一個實現是在rosettacode.org:http:/ /rosettacode.org/wiki/Primality_by_trial_division#Tcl – 2010-07-30 08:21:01

回答

17

除了if {0} ..這是慣用的(也是大多數tcl程序員認可的)之外,你還可以使用任何其他構造和東西來將你想要的東西用大括號引用註釋掉。防止執行的真正機制在於大括號內的內容不被替換。

這裏是我的一些最愛。我喜歡他們,因爲他們是自我說明:

set COMMENTED_OUT { 

    commented out stuff 

} 

proc COMMENTED_OUT {} { 

    commented out stuff... 

} 

我傾向於選擇proc因爲註釋掉的文本塊是真正的代碼塊。

注意,TCL不會編譯PROC機構,直到第一次執行這樣註釋掉使用proc是便宜,因爲setif {0} ...

+6

當然,如果你正在評論的東西是越野車,並且有不平衡的大括號,這將不起作用。 – 2010-08-01 02:26:51

11

這個問題還不清楚。 你的意思是評論一段代碼嗎? 那麼有兩種方式: 前綴# 使用的東西,每行沿

if { 0 } { 
    a section 
    of 
    "commented" code 
} 

如果沒有請重新改寫我們展示你的意思的例子的這個問題。

+2

需要說明的是,Tcl在解決問題時永遠不會執行(除了檢查大括號平衡),否則不會解析主體*。 – 2010-07-30 12:53:19

+3

需要提及的是,如果要阻止的代碼行具有不平衡的大括號,則'if 0'技巧將不起作用。 – 2010-08-01 02:28:26