2011-10-18 9 views
1

私はいくつかのオブジェクトをすべて同じパラメータで作成したいので、それらを返すprocに保存しようとしました。しかし、通訳者は結果をいくつかではなく1つのパラメータとして評価します。procを使ってTclのパラメータを複製する

proc element_param {} { 
    return "-filled 1\ 
     -visible 1\ 
     -linewidth 1\ 
     -linecolor yellow\ 
     -fillcolor yellow\ 
     -relief roundraised\ 
     -linewidth 2" 
} 

と私はそれを使用する:私のprocがあり、私はいくつかの異なるパラメータにそれらを有効にするにはどうすればよい

$this/zinc add rectangle 1 [list "100" "100" "200" "200"] [element_param] 

? TCL 8.5および使用上記で

答えて

7

パラメータのリストを展開するには、{*}演算子:以前のバージョンとの

$this/zinc add rectangle 1 $coords {*}[element_param] 

あなたはevalのを使用してリストを展開することができます

eval [linsert [element_param] 0 $this/zinc add rectangle 1 $coords] 

同等です。

+0

または: 'eval [list $ this/zinc add rectangle 1 $ coords] [element_param]'これは恐ろしい方法で構築されていても返されるリストなので、 –

+0

@Donal Fellows、それはなぜ恐ろしい方法で造られていますか、それを構築するためのより良い方法は何ですか? – SIMEL

+1

@Ilya: 'list'コマンドを使うほうが良いでしょう。たとえば、スペースが入っているオプションが必要な場合は、引用符で正しいことをします。手でそれらのものを引用することは可能ですが、これは間違っていることが容易であるため、**強く推奨されません。 'list'(またはリストを作成する他のコマンドの1つ)を使って、それが自動的に正しく実行されるようにしてください。 –

関連する問題