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

相关问题