2016-03-29 8 views

答えて

1

info bodyコマンドを使用すると、プロシージャの内容を取得できます。

% proc add {a b} { 
     return [expr {$a+$b}] 
} 
% info body add 

     return [expr {$a+$b}] 

% 
+0

これは手順でのみ動作することがわかります。他の方法をお勧めしますか?私はinfo procsを使うときにリストされたコマンドの内容を見たいです。 –

+0

'proc'で書かれている場合にのみ抽出することができます。 'lindex'などの内部コマンドは、特定の目的をサポートするためにC言語で開発されているため、動作しません。これはまた、シーンのものの後ろを隠すのに役立ちます。 STCのHLT APIはこのような例の1つです。 – Dinesh

+0

情報ありがとう、私はtcl上に構築されているツールを使用しています。私はビルドされていない多くのコマンドがあることがわかります。この場合、私たちは何をすることができますか? –

2

一般的なコマンドには意味がありません。たとえば、lsetコマンドには、いくつかのC関数に渡っていくつかの異なる実装があります。解釈されたバージョンと、バイトコードでコンパイルされたバージョンを処理するためのいくつかのバージョンと、ソースをバイトコードにコンパイルする関数があります。多くのTclコマンドはこのような内部的な複雑さを持っていますが、実際に使用されている実装方法と同じように動作します。さらに、Tclコードから見えるコマンド実装の領域にマップを提供する試みはありません。興味のあるバージョンのTclソースコードを検索するだけです。

手順は、コマンドの特別なサブクラスです。そこには、info bodyで取り出すことができるようにソースコードを保持しています。

+0

神様ありがとう!あなたは魔法を説明するようになった...;) – Dinesh

関連する問題