1

初期の Tcl バージョンでは#anything、引数がどこにも送信されないという唯一の例外を除いて、コメント コマンド ( ) は通常のコマンド (解析済み) として正確に扱われましたか? だから、あなたはこれを行うことができます...

% # {
  comment
}

...しかし、これではありません:

% # remember to initialize $width here
can't read "width": no such variable
% # a comment [with brackets] here
invalid command name "with"

# 文字から行末までを完全に無視するように変更されたのは、どのバージョンですか?

4

2 に答える 2

2

sourceforge でリリースされた Tcl の最も古いバージョンは2.1です。その tarball のマンページから:

コメント

コマンド内の最初の空白以外の文字が の場合、次の改行文字まで#のすべてが#コメントとして扱われ、無視されます。

そう; いいえ、すべての実用的な目的のために、コメントは特別な構文であり、通常の tcl コマンドではありません。

編集、いくつかのコメント (メタコメント?)

コメントが通常のコマンドではない理由の 1 つは、中かっこを一致させたくない場合に中かっこを簡単に一致させることができるためです。1 つの右中括弧を出力する proc を書きたいとします。

proc writeBrace {} {
    puts "}"
}

残念ながら、中括弧はもはや一致せず、tcl は proc の本体として認識します。これは、左中括弧と一致する右中括弧のputs "にあるためです。修正は簡単です:

proc writeBrace {} {
    # match the brace below: {
    puts "}"
}

これで、開き括弧と閉じ括弧の数が proc 本体で一致しました。中括弧は、 tcl が proc 本体を解析しようとする前に照合されることに注意してください。これは、tcl コードではなく、引数解析中の単なる文字列です。

于 2012-12-31T03:11:56.390 に答える
0

ルールでは、#の後のすべての文字が無視されるとは規定されていません。それよりも少し注意が必要です。

Tcl'ers wikiのこのページでは、コメント構文の落とし穴について詳しく説明しているので、ここですべてを繰り返すことはしません: http ://wiki.tcl.tk/462

基本的には評価の順序であり、コマンドを確認する前に、最初にグループ化するために中括弧が使用されます。

于 2012-12-31T04:10:23.847 に答える