Найти реализацию функции в tcl - PullRequest
0 голосов
/ 24 марта 2020

У меня есть скрипт, который запускается из другого инструмента. Сценарий запускает функцию, но я не знаю, где реализация этой функции. Моя цель: найти реализацию этой функции Как я могу это сделать? Я нашел такие команды, как env (TCLLIBPATH) и auto_path, но получил сообщение, что эти переменные не определены. Команда grep не помогает, потому что я не знаю, где ее искать.

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Если простой метод поиска команд source и package require не показывает, откуда поступила команда, она может быть загружена автоматически. Проверьте массив auto_index, чтобы увидеть, есть ли в нем запись для команды. Например:

% array get auto_index parray
parray {source /usr/lib64/tcl/tcl8.6/parray.tcl}
% array get auto_index history
history {source /usr/lib64/tcl/tcl8.6/history.tcl}
0 голосов
/ 24 марта 2020

Чтобы найти реализацию этой функции

В Tcl не обязательно находить определение источника для proc, вы можете попросить Tcl раскрыть реализацию (независимо от источника) с помощью самоанализа. Если вы знаете имя proc (foo), используйте info args и info body:

% proc foo {a} { puts "Hello World!" }
% info args foo
a
% info body foo
 puts "Hello World!" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...