Types 艾菲尔:扩展类型是否符合任何标准? 假设foo:ANY是一个可分配的实体。 当我执行foo:=创建{BOOLEAN}时会发生什么?

Types 艾菲尔:扩展类型是否符合任何标准? 假设foo:ANY是一个可分配的实体。 当我执行foo:=创建{BOOLEAN}时会发生什么?,types,polymorphism,eiffel,Types,Polymorphism,Eiffel,它总是会失败,因为扩展类型不符合任何引用类型,对吗?扩展类型符合引用类型,前提是满足其他一致性要求。所以,你提到的例子很好用。此外,可以编写foo:=True 这种重新连接后的关键区别是保留了扩展类型的复制语义,即,如果存在类型为ANY的实体栏,赋值栏:=foo将把布尔对象的副本附加到该栏,而不是相同的引用。所以,若随后更改了附加到foo的对象的值,则bar保持不变 回答您最初的问题,布尔值符合ANY。我的印象是,每种类型,无论是否扩展,都符合ANY。我测试了代码:foo:=create{BOO

它总是会失败,因为扩展类型不符合任何引用类型,对吗?

扩展类型符合引用类型,前提是满足其他一致性要求。所以,你提到的例子很好用。此外,可以编写foo:=True

这种重新连接后的关键区别是保留了扩展类型的复制语义,即,如果存在类型为ANY的实体栏,赋值栏:=foo将把布尔对象的副本附加到该栏,而不是相同的引用。所以,若随后更改了附加到foo的对象的值,则bar保持不变


回答您最初的问题,布尔值符合ANY。

我的印象是,每种类型,无论是否扩展,都符合ANY。我测试了代码:foo:=create{BOOLEAN},它工作了。然后如果foo:INTEGER_8_REF,我可以做foo:=create{INTEGER_8}吗?@g4v3,是的,这应该可以。顺便说一句,如果答案令人满意,您可以将其标记为已接受,以便用户可以看到问题得到了回答。否则,欢迎您询问更多详细信息。是的,这就是我之前没有将其标记为已接受的原因。你的回答我还没说完。我想再问一件事。但我也在思考,我是应该把它作为一个评论,还是作为一个问题来发表。我决定把它作为一个独立的问题发布。那我就等你的答复吧!: