2016-03-29 2 views

Antwort

1

können Sie info body Befehl verwenden, um die Inhalte eines Verfahrens zu erhalten.

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

     return [expr {$a+$b}] 

% 
+0

Ich sehe, dass dies nur für Verfahren funktioniert. Könnten Sie bitte einen anderen Weg vorschlagen? Ich möchte den Inhalt der Befehle sehen, die aufgelistet werden, wenn wir info procs verwenden –

+0

Wir können nur extrahieren, wenn es über 'proc' geschrieben wird. Interne Befehle wie 'lindex' (oder was auch immer) wird nicht funktionieren, da sie in C entwickelt wurden, um einen bestimmten Zweck zu unterstützen. Dies hilft auch dabei, die hinter den Kulissen versteckten Sachen zu verstecken. Die HLT-API von STC ist ein solches Beispiel. – Dinesh

+0

Danke für die Info, ich benutze ein Tool, das auf tcl aufgebaut ist. Ich sehe, dass es viele Befehle gibt, die nicht eingebaut sind. Also können wir das Zeug in diesem Fall? –

2

Es gibt keine sinnvolle Stelle für einen allgemeinen Befehl. Zum Beispiel hat der Befehl lset mehrere verschiedene Implementierungen über mehrere C-Funktionen; Es gibt die interpretierte Version sowie mehrere Versionen für die Verarbeitung von bytecode-kompilierten Versionen sowie die Funktion, die die Quelle zum Bytecode kompiliert. Viele Tcl-Befehle haben diese Art von interner Komplexität, aber sie verhalten sich immer gleich, welche Implementierungsstrategie auch immer verwendet wird. Darüber hinaus gibt es keinen Versuch, eine Map in den Bereich der Befehlsimplementierungen zu stellen, die aus Tcl-Code sichtbar ist. Sie müssen nur den Tcl-Quellcode nach der Version durchsuchen, an der Sie interessiert sind.

Die Prozeduren sind unterschiedlich, eine spezielle Unterklasse des Befehls; Da wir explizit halten Sie den Quellcode herum, so dass es mit info body abgerufen werden kann.

+0

Gott sei Dank !!! Du bist gekommen, um die Magie zu erklären ...;) – Dinesh