0

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

我怎样才能对作为参数发送的对象做同样的事情?如何访问该对象的私有CalcValue方法,然后访问它的私有value变量?我应该公开方法并为变量编写公共访问方法吗?

4

1 回答 1

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将失败。

于 2013-04-24T05:59:51.253 回答