我正在编写一个方法来比较同一类的两个对象。第二个对象作为参数传入。该方法首先CalcValue
在当前对象上调用一个私有方法,如果需要(只需执行一次)计算它的数值并将其放入它的私有变量value
中。
我怎样才能对作为参数发送的对象做同样的事情?如何访问该对象的私有CalcValue
方法,然后访问它的私有value
变量?我应该公开方法并为变量编写公共访问方法吗?
我不知道您使用的是哪个面向对象的框架,所以我假设 [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
将失败。