这两个术语在这个documentation中用了很多。 struct
的概念很容易理解,即对象的属性是固定的,但是我们有dict
,它可以有任何数量的属性,所以它与正常的Object
有什么不同?为什么需要一个单独的类型为这个功能?struct和dict有什么区别?
1
A
回答
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
相关问题
- 1. UserDict和Dict有什么区别吗?
- 2. dict,collections.defaultdict,collections.OrderedDict,collectinos.UserDict有什么区别?
- 3. struct node和struct node *之间的' - >'有什么区别?
- 4. typedef const struct * CGPath和typedef struct * CGPath有什么区别?
- 5. struct node * head和struct node ** head有什么区别?
- 6. `typedef struct X {}`和`typedef struct {} X`有什么区别?
- 7. d.update(dict(a = 1,b = 2))和d.update(dict('a'= 1,'b'= 2)之间有什么区别)
- 8. * args,** kwargs与用tuple和dict调用有什么区别?
- 9. Python 3.2中的kwargs和dict有什么区别?
- 10. “struct node * temp”和“struct node *&temp”之间的区别是什么?
- 11. Go中的new(Struct)和&Struct {}之间的区别是什么?
- 12. 当在struct中声明时,char []和char *有什么区别?
- 13. 有什么区别`和$(Bash中有什么区别?
- 14. 有什么区别? :和||
- 15. &&和||有什么区别?
- 16. “/”和“/ *”有什么区别?
- 17. 有什么区别:。!和:r!?
- 18. ==和===有什么区别?
- 19. Appender和〜有什么区别?
- 20. $ @和$ *有什么区别?
- 21. is和=有什么区别?
- 22. #.00和#。##有什么区别?
- 23. `==`和`is`有什么区别?
- 24. '=='和'==='有什么区别?
- 25. /和/#/有什么区别?
- 26. | 0和~~有什么区别?
- 27. `&`和`ref`有什么区别?
- 28. ==和===有什么区别?
- 29. ==和===有什么区别?
- 30. `{}`和`[]`有什么区别?
'@ struct'和'@ dict'只是注释,告诉编译器该对象将如何使用。这在你连接的文档中有解释。不知道我理解你的问题... –
@FelixKling,因为我告诉'结构'有一个合理的理由是单独的类型,但在JavaScript中,我们已经有一个隐含的概念'dict'作为一个对象,为什么我们需要创建一个单独的类型为了那个原因?实际上我们可以使用普通的Object作为字典。 – CodeYogi
这似乎意味着每个未明确注释为@struct的对象只能使用括号表示来访问,即如何使用该对象将被隐式限制。明确似乎更好? –