2011-08-01 20 views

答えて

3

あなたの質問は本当に私には意味がありません。 TCLでは、リストは内部的に文字列として格納されます。あなたが{"1"、 "2"、 "3"}にリストしたいと言うとき、私はあなたがリストの外部ディスプレイを参照していると仮定できます。それは次のようにコマンドを結合を使用して行うことができます。

% set x [list 1 2 3] 
% set z "\{\"[join $x "\","]\"\}" 

{ "1"、2" 、3" }

+1

リストは文字列として保存されていない内部的にはもう、(Tcl_ListObject [リンク]を参照してください例えばhttp://tmml.sourceforge.net/doc/tcl/ListObj.html)。しかし、それは細部のことです。やって対処しません – schlenk

+0

すべての '" 'の文字の可能性に対処するために必要な引用が、あなたは' foreach'をやって(またはヘルパープロシージャをそれを農業)に入るとき、それはです。 –

4

あなたがの文字列表現を混乱させていますそのメモリ内表現を持つリストメモリ内のリストはそれだけです。そうでなければ別々の要素の順序付きリストです。それを "きれいに印刷"する必要がある場合(通常、端末に出力するために)、それから文字列を作り、それを出力します。 をご使用の場合、の文字列を作成する最も簡単な方法は、すでに提案されている[join]を使用することです。このリストは、その要素のスペースを文字列として格納されている」ことを意味しない。換言すれば

は、そのコード

set L [list 1 2 3] 
puts $L 

出力が「1 2 3」事実によってだまされません - 分離された "。 暗黙にに問い合わせるときにTclによって使用されるリストのデフォルト文字列表現だけです。文字列値を期待する[puts]にそのリストを渡すことによってリストから文字列を外します。 (NB厳密には、Tclのの内部にに関して正しくないですが、今のところこれを無視しましょう「の文字列値が期待する」。)

関連する問題