在带有Vectors的Flash Player 10中,为什么还要使用Arrays呢?

Rob*_*cks 5 arrays flash types vector actionscript-3

如果您的目标是Flash Player 10,是否有理由坚持使用Arrays作为AS3中的默认列表数据结构?为什么不在整个程序中使用Vectors(类型化数组)作为默认值,因为它们是:

  • 快点
  • 类型检查

它是否表现不佳或导致更高的内存开销?有没有理由再使用数组了?

Rob*_*sto 6

很多理由.例如,向量不是稀疏填充的,因此如果您的Vector的索引为999,则您有一个包含1,000个元素的数组.在标准阵列中,您可以只有一个.

  • Vector可以选择固定长度,这意味着它的长度不能改变.并且您永远不能一次向阵列添加多个元素(由于答案中提到的原因).也就是说,由于你提到的两个原因,矢量非常好. (2认同)

Rob*_*cks 4

我根据我对这个问题的了解来回答我自己的问题。

仅对于这些数据类型,向量更快:--(证明

  • 整数
  • 单位
  • 数字
  • 布尔值

数组优于所有其他类型:

  • 弦乐

向量的使用受到更多限制:

  • 读/写经过边界检查
    • 不存在的槽不能直接用 [5] = Val 设置
    • 无法读取不存在的插槽(否则您将收到异常)
  • 必须push()来创建槽
  • 排序速度较慢

向量就比较麻烦了:

  • 多维数组无法转换为向量
  • 向量无法转换为多维数组
  • 不能与 String.split() 一起使用
  • 所有元素的固定类型 - 不适用于 JSON

矢量可以更容易调试:

  • 将 [Vector of ints] 设置为 [Vector of Vector of ints] 将抛出异常
  • 编译时错误(在某些情况下)
    • 当尝试将 [整数向量] 设置为 [字符串向量] 时
    • 当尝试将[整数向量]设置为[整数向量的向量]时