Eiffel:扩展类型是否符合 ANY?
Eiffel: Do expanded types conform to ANY?
- 假设
foo: ANY
是一个可分配的实体。
- 当我这样做时会发生什么
foo := create {BOOLEAN}
?
它总是会失败,因为 BOOLEAN
(扩展类型)不符合 ANY
(引用类型),对吗?
扩展类型符合参考类型(前提是满足其他一致性要求)。因此,您提到的示例效果很好。而且写foo := True
.
也是可以的
此类重新附加后的主要区别在于保留了扩展类型的复制语义,即如果存在类型 ANY
的实体 bar
,赋值 bar := foo
将附加一个布尔对象的副本到 bar
,而不是相同的引用。因此,如果之后更改附加到 foo
的对象的值,bar
将保持不变。
回答你原来的问题,BOOLEAN
符合ANY
。
- 假设
foo: ANY
是一个可分配的实体。 - 当我这样做时会发生什么
foo := create {BOOLEAN}
?
它总是会失败,因为 BOOLEAN
(扩展类型)不符合 ANY
(引用类型),对吗?
扩展类型符合参考类型(前提是满足其他一致性要求)。因此,您提到的示例效果很好。而且写foo := True
.
此类重新附加后的主要区别在于保留了扩展类型的复制语义,即如果存在类型 ANY
的实体 bar
,赋值 bar := foo
将附加一个布尔对象的副本到 bar
,而不是相同的引用。因此,如果之后更改附加到 foo
的对象的值,bar
将保持不变。
回答你原来的问题,BOOLEAN
符合ANY
。