2009-10-29 18 views
2

Comment accéder au membre de tableau associatif d'une classe à l'intérieur de la classe elle-même? Itcl est modélisé après C++, et en C++ nous écririons:ITCL - Comment accéder au membre du tableau associatif dans une classe?

SomeObject.SomePublicMember = ... 

Comment faire la même chose dans Itcl? Sans fournir de procédure d'accès pour un tel tableau. Je l'ai vu que pour les variables simples habituelles cela peut être obtenu en utilisant cget:

$this cget -PublicMemberVariableName 

Cependant la construction suivante ne fonctionne pas:

$this cget -AssociativeArrayName(NamedIndex) 

Est-ce possible?

Répondre

2

Hélas, cget n'aura pas ce que vous voulez. L'élément de tableau n'est pas transmis jusqu'à ItclGetInstanceVar (je ne sais pas pourquoi).

Vous pouvez utiliser get/set et articles similaires:

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] 
}