2011-07-05 14 views

答えて

5

language definitionで述べたように、

< \改行> whiteSpaceの

単一の空白文字は、改行後にバックスラッシュ、改行、およびすべてのスペースとタブを置き換えます。このバックスラッシュシーケンスは、コマンドが実際に解析される前に別々のプレパスで置き換えられる点でユニークです。これは、中括弧の間にあっても置換されることを意味し、中括弧や引用符で囲まれていない場合、結果のスペースは単語区切りとして扱われます。

これはあなたのサンプルことを意味します

proc ::A::B {c \ 
      d \ 
      e \ 
      f 
} 

は(間隔を注意してください)。このと同等の正確次のとおりです。これは無効な呼び出しになることを考えると

proc ::A::B {c d e f 
} 

通常のprocコマンドを使用して、サンプルコードを少し修正したと思われます。 :-)

5

Tclの行末のバックスラッシュ\は、行継続を示します。したがって、あなたのステートメントはまったく同じです:

proc ::A::B {c d e f} 

ただし、それは複数のソース行にまたがって分割されています。

+2

バックスラッシュが行の最後の文字であることに注意する必要があります。私はバックスラッシュ改行の特殊性を否定するスペースがある過去に噛まれました。行末をハイライトできるエディタを使用すると便利です。 –

+0

技術的には、{c d e f}と同じです。文字間の2つのスペースに注意してください。バックスラッシュは改行に続く空白を単一のスペースにエスケープします。バックスラッシュの前にスペースがあったので、合計2つのスペースで終了します。 – RHSeeger

関連する問題