2013-04-23 6 views
0

Я пишу метод сравнения двух объектов одного класса. Второй объект передается в качестве аргумента. Метод начинается с вызова частного метода CalcValue на текущем объекте, который, если необходимо (требуется только один раз), вычисляет его численное значение и помещает его в свою переменную value.Tcl: Сравнить экземпляры класса

Как я могу сделать то же самое для объекта, отправленного в качестве аргумента? Как получить доступ к частному методуэтого объекта, а затем получить доступ к его частной переменной value? Должен ли я сделать метод общедоступным и написать общедоступный метод доступа для переменной?

ответ

1

Я не знаю, какую объектно-ориентированную структуру вы использовали, поэтому я предполагаю [incr Tcl]. Вам нужно будет сделать метод CalcValue общедоступным, если вы хотите, чтобы второй объект имел к нему доступ. Ниже чрезмерно упрощенный пример, который иллюстрирует, как получить доступ к методу:

package require Itcl 

itcl::class Thing { 
    method CalcValue {} { return 999 } 
    method compare {otherThing} { 
     set myValue [CalcValue] 
     set otherValue [$otherThing CalcValue] 
     # Do something 
    } 
} 

# -------- MAIN: Create two instances and compare -------- 
Thing thing1 
Thing thing2 
thing1 compare thing2 

Если CalcValue является частным, то вызов $otherThing CalcValue потерпит неудачу.

Смежные вопросы