Неизвестная переменная внутри объекта - PullRequest
0 голосов
/ 06 июня 2018

Почему переменная не видима для процесса, если вызывается из другого процесса?

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 голосов
/ 06 июня 2018

Я не полностью знаком с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...