Tcl 对象中的未知变量

Tcl 对象中的未知变量,tcl,Tcl,如果从另一个进程调用,为什么该变量对该进程不可见 package require itcl itcl::class foo { protected variable _name proc constructor {} { set _name Juan } proc name {} { return $_name } proc name2 {} { return [name] } } set bar [foo ::#au

如果从另一个进程调用,为什么该变量对该进程不可见

package require itcl
itcl::class foo {
   protected variable _name
   proc constructor {} {
      set _name Juan
   }
   proc name {} {
      return $_name
   }
   proc name2 {} {
      return [name]
   }
}
set bar [foo ::#auto]
puts [$bar name]
puts [$bar name2]
这将产生:

Juan
can't read "_name": no such variable

我并不完全熟悉incrTcl,但我认为您根本不使用
proc
。构造函数应该是

constructor {} {
    set _name Juan
}
并使用
方法
关键字

method name {} {
    return $_name
}
method name2 {} {
    return [name]
}
然后

% set bar [foo ::#auto]
::foo0
% puts [$bar name]
Juan
% puts [$bar name2]
Juan