1

這兩個術語在這個documentation中用了很多。 struct的概念很容易理解,即對象的屬性是固定的,但是我們有dict,它可以有任何數量的屬性,所以它與正常的Object有什麼不同?爲什麼需要一個單獨的類型爲這個功能?struct和dict有什麼區別?

+0

'@ struct'和'@ dict'只是註釋,告訴編譯器該對象將如何使用。這在你連接的文檔中有解釋。不知道我理解你的問題... –

+0

@FelixKling,因爲我告訴'結構'有一個合理的理由是單獨的類型,但在JavaScript中,我們已經有一個隱含的概念'dict'作爲一個對象,爲什麼我們需要創建一個單獨的類型爲了那個原因?實際上我們可以使用普通的Object作爲字典。 – CodeYogi

+0

這似乎意味着每個未明確註釋爲@struct的對象只能使用括號表示來訪問,即如何使用該對象將被隱式限制。明確似乎更好? –

回答

1

我認爲關鍵的區別是對documentation page

鑑於使用@struct,你知道,編譯器將安全地重新命名所有的屬性,因爲你不能使用支架的訪問。通過使用@dict,你知道這些屬性在編譯後會有相同的名字。

(瞭解關於編譯器的關鍵是properties accessed with bracket notation are not renamed)。

使用閉包編譯器會按照您指定的方式限制您對JavaScript的使用。您正在告訴編譯器在您編寫代碼時警告您,該代碼打破了您使用類似@struct@dict等註釋的限制。

如您所說,@dict的確像「正常的Object」一樣。通過使用@dict,您告訴編譯器您將要爲對象添加屬性,並且不希望將這些屬性重命名爲最小名稱。

與之相反@struct通常用於不關心編譯器重命名屬性的類。你也不希望爲這樣的對象添加屬性,所以如果你這樣做,應該是一個錯誤。

順便說一下,在我看來,page about struct and dict的例子有點難以理解,所以如果你仍然對該頁面上的任何東西感到困惑,隨時可以多問一些。

+0

關於這個http://stackoverflow.com/q/36770632/4260745的任何想法? – CodeYogi

相關問題