2009-10-29 4 views
2

Как получить доступ к ассоциативному элементу массива класса внутри самого класса? ITCL смоделирован C++, и в C++, мы должны написать:ITCL - Как получить доступ к ассоциативному элементу массива внутри класса?

SomeObject.SomePublicMember = ... 

Как сделать то же самое в ITCL? Без предоставления процедуры доступа для такого массива. Я видел, что для обычных простых переменных это может быть получено с помощью cget:

$this cget -PublicMemberVariableName 

Однако следующая конструкция не работает:

$this cget -AssociativeArrayName(NamedIndex) 

Возможно ли это вообще?

ответ

2

Увы, cget не получит то, что вы хотите. Элемент массива не передается вплоть до ItclGetInstanceVar (я не уверен, почему).

Вы можете использование получить/установить и тому подобное:

class myObject { 
    public variable AssArray 
    constructor {} { 
     array set AssArray "" 
    } 
    method setArr { elem val } { 
     set AssArray($elem) $val 
    } 
    method getArr { elem } { 
     return $AssArray($elem) 
    } 
    method getFullArr {} { 
     return [array names AssArray] 
} 
Смежные вопросы