2017-06-05 49 views
0
  1. 假設foo: ANY是一個可分配的實體。
  2. 當我做foo := create {BOOLEAN}會發生什麼?

它總是失敗,因爲BOOLEAN(擴展型)不符合ANY(引用類型),正確嗎?艾菲爾:擴展類型是否符合ANY?

+0

我的印象是,每種類型,擴展與否,都符合ANY。我測試該代碼: foo:= create {BOOLEAN} 它工作。 –

回答

1

擴展類型符合引用類型(前提是滿足其他一致性要求)。所以,你提到的例子工作得很好。此外,可以寫foo := True

的關鍵區別這樣reattachments之後是膨脹類型的複製語義被保留,即如果有ANY類型的實體bar,分配bar := foo將布爾對象的副本附加到bar,不相同的參考。因此,如果之後更改附加到foo的對象的值,則bar保持不變。

回答您的原題,BOOLEAN符合ANY

+0

那麼如果'foo:INTEGER_8_REF',我可以做'foo:= create {INTEGER_8}'? – g4v3

+0

@ g4v3,是的,這應該沒問題。順便說一句,如果答案令人滿意,您可以將其標記爲已接受,以便SO用戶可以看到問題得到解答。否則,歡迎您索取更多詳細信息。 –

+0

是的,這就是我之前沒有將它標記爲已被接受的原因。我還沒有完成你的答案。我想再問一件事。但我也在思考是否應該將其作爲評論發表,還是作爲自己的問題發表。我決定把它作爲一個獨立的問題發佈。那麼我會等你的回答! :) – g4v3