0

2つのクラス名を付けclassName1て、その遺産にどこclassName2かにあるかどうかを確認するにはどうすればよいですか?className1className2

4

1 に答える 1

4

残念ながら、[incr Tcl]はオブジェクトのイントロスペクションのみをサポートし、クラスはサポートしていません。のインスタンスを作成し、className1その遺産をでフェッチして、そのリストに存在info heritage $theInstanceするかどうかを確認する必要があります。className2混雑。(4.0以降では、がの直接サブクラスであるinfo class subclasses className2 className1かどうかを確認するために使用できますが、間接サブクラス、つまり間にいくつかのサブクラスがある場合は機能しません。)className1className2

ただし、Tclでのオブジェクト指向プログラミングの一般原則では、可能であればダックタイピングを使用する必要があると示される傾向があります。オブジェクトが適切なクラスであるかどうかを心配する必要はなく、送信するメッセージに応答できるかどうかを心配する必要があります。それに(つまり、呼び出したいメソッド)。どのオブジェクトも未知のメソッド呼び出しを呼び出す試みをトラップできるため、イントロスペクションによって実際に何が行われるかを実際に知ることはできず、単に試してみる必要があります。または、運が良ければドキュメントを探してください。

于 2012-01-08T23:03:57.953 に答える