在Eiffel中,可以指定带有“anchored declaration”的类型。
我想知道类中的相关不变量是否也适用于锚定声明:
class C
feature
f: INTEGER
do
... Do something ...
end
g: like f
do
... Do some other thing ...
end
invariant
0 < f
-- 0 < g <-- Does this pop into existence?
end
我没有看到这写在任何地方,我认为事实并非如此。有时,避免定义另一种类型会很方便,但我认为这会限制锚定声明在所有其他情况下的有用性。
答案 0 :(得分:1)
不,不可能从锚定声明中自动创建不变量。在该行:
g: like f
锚类型“像f”只能替换“g”的类型。它非常类似于复制和粘贴“f”的类型作为“g”的类型。换句话说,在您的示例中,您所写的内容几乎与直接编写相同:
g: INTEGER