Чтение документации. Я не думаю, что проки в классе itcl работают так, как вы думаете:
имя процесса? Args? ? Тело?
Объявляет процесс с именем name. Процедура - это обычная процедура в
пространство имен класса. В отличие от метода,
процесс вызывается без ссылки на
конкретный объект. Когда тело процедуры
будет выполнен автоматически
Доступ только к общим данным членов.
Если указан список аргументов, он устанавливает информацию об использовании для
этот проц. Команда body может быть
используется для переопределения тела процедуры, но
список аргументов должен соответствовать этому
Спецификация.
В теле другого метода или метода класса может быть вызван процесс
как любая другая команда - просто с помощью
его имя. В любом другом пространстве имен
контекст, proc вызывается с помощью
квалифицированное имя типа "className :: proc".
Проц в базовом классе, которые
переопределено в текущем классе, или
скрытый другим базовым классом, также может
быть доступным через их квалифицированное имя.
Насколько я понимаю, proc связан с его классом, на него можно ссылаться в производном классе, но он не определен в нем Например, следующие работы:
package require Itcl
::itcl::class Base {
public {
proc function { } { puts "==== Base::function" }
}
}
::itcl::class Derived {
inherit Base
public {
proc function { } {
puts "==== Derived::function"
return [Base::function]
}
}
}
Base::function
Derived::function ;# FAILS