簡體   English   中英

埃菲爾鐵塔:一種檢查給定CLASS_NAME類型符合性的方法

[英]Eiffel: a way to check type conformance with a given CLASS_NAME

我正在嘗試做一些事情

work (a_father: FATHER)
    do
        if a_father.conforms_to ({DEVELOPER}) then
           a_father.code
        else
           a_father.change_job ({DEVELOPER})
        end
    end

在此處輸入圖片說明 在此處輸入圖片說明

編譯工作正常,但是在我的實現@runtime中,它沒有通過。 我輸錯了什么?

您的示例中的問題是您試圖查看FATHER類型(對象a_father的類型)是否符合TYPE [DEVELOPER]類型(對象{DEVELOPER}的類型)。

您應該做的是:

if a_father.generating_type.is_conforming_to ({DEVELOPER}) then

因此,將TYPE [FATHER]TYPE [DEVELOPER]

請注意,我會認為它會通過更換工作is_conforming_to通過conforms_to ,但類TYPE推出這個程序is_conforming_to有一個更具體的參數類型。

我最好使用內置機制來檢查對象類型的符合性:

if attached {DEVELOPER} a_father as dev then
     dev.code
else
     a_father.rest
end

並在前提條件中使用相同的方法:

attached {RELATED_DB_ENTITY} a_relationship_entity

對象測試執行您a_relationship_entity :它檢查附加到參數a_relationship_entity的對象的類型a_relationship_entity符合RELATED_DB_ENTITY類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM