2016-11-06 53 views
0

在艾菲爾,可以指定一個'anchored declaration'的類型。與艾菲爾的關鍵字「like`不變的分享

不知班上相關不變,亦適用於錨聲明:

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 

我沒有看到這在任何地方寫的,我覺得的情況並非如此。有時候避免定義另一種類型會很方便,但我認爲這會限制所有其他情況下的錨定聲明的用處。

回答

1

不,不可能從錨定聲明自動創建不變量。在該行中:

g: like f 

錨點類型「like f」只替換了「g」的類型。這與將「f」類型複製並粘貼爲「g」類型非常相似。換句話說,在你的例子中,你寫的東西幾乎和直接寫:

g: INTEGER 
+0

謝謝你清理那個,我只是想確定! – g4v3