2013-04-23 33 views
0

我在写一个方法来比较同一个类的两个对象。第二个对象作为参数传入。该方法首先调用当前对象的私有方法CalcValue,如果需要(只需要做一次)计算它的数值并将其放入它的私有变量valueTcl:比较一个类的实例

我该如何对作为参数发送的对象做同样的事情?我如何访问该对象的私人CalcValue方法,并稍后访问它的私人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将失败。