0

同じクラスの 2 つのオブジェクトを比較するメソッドを作成しています。2 番目のオブジェクトは、引数として渡されます。このメソッドはCalcValue、現在のオブジェクトでプライベート メソッドを呼び出すことから始まります。必要に応じて (1 回だけ実行する必要があります)、その数値を計算し、プライベート変数に入れますvalue

引数として送信されたオブジェクトに対して同じことを行うにはどうすればよいですか? CalcValueそのオブジェクトのプライベートメソッドにアクセスし、後でそのプライベートvalue変数にアクセスするにはどうすればよいですか? メソッドをパブリックにして、変数のパブリック アクセス メソッドを作成する必要がありますか?

4

1 に答える 1

1

どのオブジェクト指向フレームワークを使用したかわかりませんので、[incr Tcl] だと思います。CalcValue2 番目のオブジェクトがアクセスできるようにする場合は、メソッドを publicにする必要があります。以下は、メソッドにアクセスする方法を示す非常に単純化された例です。

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 に答える