Oop Tcl:比较类的实例

Oop Tcl:比较类的实例,oop,tcl,Oop,Tcl,我正在写一个方法来比较同一类的两个对象。第二个对象作为参数传入。该方法首先调用当前对象上的私有方法CalcValue,必要时(只需执行一次)计算其数值并将其放入其私有变量value 如何对作为参数发送的对象执行相同的操作?如何访问该对象的privateCalcValue方法,然后访问它的privatevalue变量?我应该将该方法公开并为变量编写一个公共访问方法吗?我不知道您使用的是哪个面向对象的框架,因此我假设[incr Tcl]。如果希望第二个对象访问CalcValue方法,则需要将其公开。

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


如何对作为参数发送的对象执行相同的操作?如何访问该对象的private
CalcValue
方法,然后访问它的private
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
将失败