对象内的未知变量

时间:2018-06-06 13:41:14

标签: tcl

如果从另一个proc调用该变量,为什么该变量不可见?

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

1 个答案:

答案 0 :(得分:0)

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

constructor {} {
    set _name Juan
}

并使用method关键字

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

然后

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