2つのクラス名を付けclassName1
て、その遺産にどこclassName2
かにあるかどうかを確認するにはどうすればよいですか?className1
className2
1 に答える
残念ながら、[incr Tcl]はオブジェクトのイントロスペクションのみをサポートし、クラスはサポートしていません。のインスタンスを作成し、className1
その遺産をでフェッチして、そのリストに存在info heritage $theInstance
するかどうかを確認する必要があります。className2
混雑。(4.0以降では、がの直接サブクラスであるinfo class subclasses className2 className1
かどうかを確認するために使用できますが、間接サブクラス、つまり間にいくつかのサブクラスがある場合は機能しません。)className1
className2
ただし、Tclでのオブジェクト指向プログラミングの一般原則では、可能であればダックタイピングを使用する必要があると示される傾向があります。オブジェクトが適切なクラスであるかどうかを心配する必要はなく、送信するメッセージに応答できるかどうかを心配する必要があります。それに(つまり、呼び出したいメソッド)。どのオブジェクトも未知のメソッド呼び出しを呼び出す試みをトラップできるため、イントロスペクションによって実際に何が行われるかを実際に知ることはできず、単に試してみる必要があります。または、運が良ければドキュメントを探してください。