rwa*_*ace 8 arrays scripting language-design data-structures
某些脚本语言(如Python和Javascript)将数组(也称为列表)作为与哈希表(即字典,映射,对象)的单独数据类型.在其他脚本语言中,例如PHP和Lua,数组只是一个哈希表,其键恰好是整数.(该实现可能针对该特殊情况进行了优化,如在当前版本的Lua中所做的那样,但这对语言语义是透明的.)
哪种方法更好?
统一的做法是有一两件事,而不是两个感更优雅,虽然增益不太大,因为它可能乍一看,因为你仍然需要有遍历具体数字键的概念.
统一的方法可以说更灵活.您可以从嵌套数组开始,发现需要使用其他内容对它们进行注释,只需添加注释,而无需重新编写数据结构以将数组与哈希表交错.
在效率方面,它似乎只是一种洗涤(假设实现针对特殊情况进行了优化,如Lua所做的那样).
我错过了什么?单独的方法有什么优势吗?
小智 3
数组不仅仅是一张故意限制为连续整数键的表。它是一个序列,是具有明确定义顺序的 n 个项目(不是键值对,只是值)的集合。在我看来,这是一种没有空间容纳非整数键形式的附加数据的数据结构。它在概念上更简单。
另外,单独实现这两个可能会更简单,特别是考虑到添加一个优化(这显然很模糊,以至于像 Lua 这样的面向性能的语言多年来都没有实现它),这使得数组表现良好。
此外,灵活性点也存在争议。如果需要更复杂的注释,您很可能很快也需要多态性,在这种情况下,您应该切换到具有数组和其他属性的对象。