Eiffel:扩展类型是否符合任何规定?

时间:2017-06-05 16:30:12

标签: types polymorphism eiffel

  1. 假设foo: ANY是可分配的实体。
  2. 当我foo := create {BOOLEAN}时会发生什么?
  3. 它总是会失败,因为BOOLEAN(扩展类型)不符合ANY(引用类型),对吗?

1 个答案:

答案 0 :(得分:1)

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

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

回答原始问题,BOOLEAN符合ANY