繁体   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