我正在编写一种方法来比较同一个类的两个对象。第二个对象作为参数传入。该方法首先在当前对象上调用私有方法CalcValue
,如果需要(只需要执行一次),则计算它的数值并将其放入其私有变量value
。
如何将作为参数发送的对象做同样的事情?如何访问该对象的私有CalcValue
方法,然后访问它的私有value
变量?我应该公开方法并为变量写一个公共访问方法吗?
答案 0 :(得分: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
将失败。