有没有一种方法可以在Tcl命令中嵌入注释?

3
我希望在命令中添加注释,但是由于Tcl 8.4版本中“#”字符的定义,似乎这是不可能的:
如果一个井号(“#”)出现在Tcl期望命令的第一个单词的第一个字符的位置上,那么井号和其后跟随的所有字符直到下一个换行符都将被视为注释并被忽略。当注释字符出现在命令的开头时,它才有意义。
想象一下以下示例,展示了如何实现此功能(我的实验中没有这些注释起作用):
array set myArray [list red 3        \
                        blue 4       ;# Blue is before purple.
                        purple 5     # Purple is after red.
                        green 7      \
                        yellow 8]

看起来困难的部分是如何在列表命令中嵌入注释?也许可以采用C++风格的/* Embedded comment here. */,但是我只看到Tcl中使用#作为行尾注释的符号,没有开始和结束注释语法。

2个回答

6

不,你不能在命令调用中嵌入注释。Tcl中的注释与其他语言的注释有些不同。一些人会因此感到困惑,但大多数经验丰富的Tcl程序员并不会对此多加考虑。

那些真正需要这样做的情况很少,通常可以轻松地解决。以你的例子为例:

set myArray(red) 3
set myArray(blue) 4 ;# Blue is before purple
set myArray(purple) 5 ;# Purple is after red
set myArray(green) 7
set myArray(yellow) 8

你可能会认为这比一行完成要慢,但除了在最紧急的情况下,差异是可以忽略不计的,大概只有几微秒。


3

是的,有一种方法可以嵌入注释到命令中。虽然不太美观,但是确实可行。将只包含注释的命令替换添加到列表成员中,就像这样(注释后面的换行符是必须的):

array set myArray [list red 3     \
                        blue 4[
                                  # Blue is before purple.
                        ]         \
                        purple 5[
                                  # Purple is after red.
                        ]         \
                        green 7   \
                        yellow 8]
% array get myArray
yellow 8 purple 5 blue 4 green 7 red 3

谢谢,虽然花了一些时间,但我们终于得到了答案,而不是一个权宜之计! - WilliamKF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接