如何将块注释放入TCL

Mal*_*uri 9 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 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

我想把整个过程放到一个注释中,我不想把每行都用#,是否有任何可能像java/*..*/所有代码注释,如tcl中的那样.而且我也希望将一些文字放在单一评论中

sle*_*man 18

除了if {0} ..惯用语(以及大多数tcl程序员认可的)之外,您还可以使用任何其他构造,并将您想要的内容填充到括号引号中.阻止执行的真正机制是括号引号内的东西不会被替换.

这是我最喜欢的一些.我喜欢他们因为他们是自我记录的:

set COMMENTED_OUT {

    commented out stuff

}
Run Code Online (Sandbox Code Playgroud)

proc COMMENTED_OUT {} {

    commented out stuff...

}
Run Code Online (Sandbox Code Playgroud)

我倾向于选择,proc因为注释掉的文本块实际上是一段代码.

请注意,tcl在第一次执行之前不会编译proc主体,因此使用a进行注释会和and proc一样便宜setif {0} ...

  • 当然,如果您正在评论的内容是错误的并且具有不平衡的支撑,这将不起作用. (7认同)

Fri*_*ich 11

这个问题尚不清楚.你的意思是注释掉一段代码吗?那么有两种方法:在每一行前面添加#with something

if { 0 } {
    a section
    of
    "commented" code
}
Run Code Online (Sandbox Code Playgroud)

如果没有,请重新解释这个问题,向我们展示一个你的意思的例子.

  • 需要提到的是,如果要阻止的代码行具有不平衡的大括号,则"if 0"技巧将不起作用. (3认同)
  • 为了清楚起见,Tcl根本不解析body*,如果它确定它永远不会被执行(除了检查大括号平衡). (2认同)