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 中用于行尾注释,没有用于开始和结束注释语法。

4

2 回答 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

您可能会认为这比在一条线上完成所有操作要慢,但除了时间最关键的情况(可能只有几微秒)之外,差异在所有情况下都可以忽略不计。

于 2009-09-23T17:28:27.873 回答
2

的,有一种方法可以将注释嵌入到命令中。这不漂亮,但这是可能的。向列表成员添加仅包含注释的命令替换,如下所示(注释后的换行符是强制性的):

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
于 2018-12-03T13:12:16.520 回答