0
Givetn兩個班級名稱,className1
和className2
,如何檢查className1
是否有className2
的遺產?如何檢查一個類是否是[incr Tcl]中的另一個類的基礎?
Givetn兩個班級名稱,className1
和className2
,如何檢查className1
是否有className2
的遺產?如何檢查一個類是否是[incr Tcl]中的另一個類的基礎?
唉,[incr Tcl]只支持對象而不是類的反省;您必須創建一個className1
的實例,並通過info heritage $theInstance
獲取其遺產,並檢查該列表中是否存在className2
。亂。 (從4.0開始,你可以使用info class subclasses className2 className1
檢查className1
是className2
一個直接子類,但這並不間接子類,即在工作之間,有一些子類。)
然而,OO的一般原則如果可以的話,在Tcl中編程會傾向於表明你應該使用鴨子打字:不要擔心對象是否是正確的類,擔心它是否可以響應你想發送給它的消息(即,你想調用的方法)。由於任何對象都可能陷入試圖調用未知方法調用的嘗試,因此您無法真正瞭解它將通過自省實際執行哪些操作,並且必須嘗試它。或者如果你幸運的話可以找一些文檔。
是的。重點在於具有正確的異常處理。 – Vahagn 2012-01-09 08:27:59