2011-08-03 10 views
2

ここで、リストと配列を持つTCL TKの違いは何ですか? 私は3つの配列のリストを作成しました。配列のリストを返す

ループ内でこのような

set x($idx) 1 
incr idx 

以降、私は "RET" オブジェクト

list set ret { $x $x2 $x3 } 

を返し、

lassign $data x x2 x3 

が、この文句を言わないで、再びそれらを解析します仕事... ...( 誰かがもう一度私を助けてくれるかもしれない..気分の悪いtcl tk ...:D:D

正しくない場合、2dimのリストまたは配列を作成できません。

答えて

2

あなたの配列をxと呼ばれている - あなたはset x(1)によってその要素を参照することができ、set x(2)など$×2と$ x3が、この場合には意味がありません。

あなたは2次元配列にしたい場合は、次のように、あなたはTCLでそれをシミュレートすることができます。

set a(1,1) 0 ;# set element 1,1 to 0 
set a(1,2) 5 ;# set element 1,2 to 5 

あなただけのリストを使用でき

set l1 [list a b c] 
set l2 [list d e f] 
set lol [list $l1 $l2] 
+0

は、ループを介して、リストに要素を追加することが可能ですか?追加のような? – Roby

+0

はい、非常に簡単です。例: {set i 1} {$ i <= 10} {inc i} {lappend l1 $ i} – TrojanName

1

のリストを使用している場合、それが簡単かもしれませんarray get/setは、配列を手続きの引数/戻り値として渡します。例えば:

proc someProc {arr} { 
    array set x $arr 
    set x(5) 0 
    return [array get x] 
} 

使用の例:

% set a(0) -1 
% set a(1) 1 

% parray a 
a(0) = -1 
a(1) = 1 

% array set b [someProc [array get a]] 

% parray b 
b(0) = -1 
b(1) = 1 
b(5) = 0 
+0

Tcl 8.5以降では、配列のような値を辞書として渡すことができます( 'dict'コマンドで操作します)。 'array get'コマンドは辞書を生成し、' array set'コマンドは辞書を消費します。 –

関連する問題