在带矢量的Flash Player 10中,为什么还要再使用阵列?
如果您的目标是Flash Player 10,是否有理由坚持将数组作为AS3中的默认列表数据结构?为什么不在整个程序中使用向量(类型化数组)作为默认值,因为它们是:在带矢量的Flash Player 10中,为什么还要再使用阵列?,flash,arrays,actionscript-3,types,vector,Flash,Arrays,Actionscript 3,Types,Vector,如果您的目标是Flash Player 10,是否有理由坚持将数组作为AS3中的默认列表数据结构?为什么不在整个程序中使用向量(类型化数组)作为默认值,因为它们是: 更快 类型检查 它的性能差还是会导致更高的内存开销?还有什么理由再使用数组吗?理由很多。例如,向量不是稀疏填充的,因此,如果向量的索引为999,则有1000个元素的数组。在一个标准数组中,可以只有一个。特别是当您不知道类型时,从某种意义上说,它是一个基于松散的列表。比如说,使用JSON数据 编辑:哦,这是另一个半原因-Strin
- 更快
- 类型检查
它的性能差还是会导致更高的内存开销?还有什么理由再使用数组吗?理由很多。例如,向量不是稀疏填充的,因此,如果向量的索引为999,则有1000个元素的数组。在一个标准数组中,可以只有一个。特别是当您不知道类型时,从某种意义上说,它是一个基于松散的列表。比如说,使用JSON数据 编辑:哦,这是另一个半原因-
String.split()
。这将返回一个字符串数组。不知道为什么你不能从中得到向量。,grr
话虽如此,在Flash 10+中,99%的时间您将使用向量。向量的所有“缺点”都只适用于非常特定(通常很少)的用例。正如Robusto已经说过的,向量不是稀疏填充的。虽然这可能对尺寸不利,但对速度非常有利。所以,如果您不需要非常稀疏的填充结构(实现稀疏的东西也需要一些额外的空间),您可以利用速度
这是一个典型的交易:内存vs.速度:-)这取决于你想做什么。尝试对向量进行排序?这需要更长的时间。你需要拼接一个数组还是向量?在这种情况下,您可能希望同时抛弃它们并使用链接列表。如果您正在寻找需要引用的带有命名键的内容,那么您可能会使用字典。这是一个模糊的、无用的回答——“视情况而定”——但确实如此。有这么多不同的数据列表结构是有原因的。根据我对这个问题的了解,我在回答我自己的问题 矢量仅对于这些数据类型更快:-()
- int
- 尤因
- 数
- 布尔值
- 弦
- 班级
- 已检查读/写边界
- 无法使用[5]=Val直接设置不存在的插槽
- 无法读取不存在的插槽(否则会出现异常)
- 必须按()键才能创建插槽
- 排序比较慢
- 多维数组无法转换为向量
- 无法将向量转换为多维数组
- 无法使用String.split()
- 所有元素的固定类型-对于JSON不可用
- 将[Vector of ints]设置为[Vector of Vector of ints]将引发异常
- 编译时错误(在某些情况下)
- 尝试将[ints向量]设置为[String向量]时
- 尝试将[ints向量]设置为[ints向量]时
ListBase
的控件的数据提供者的各种集合类。我看到的一个巨大的缺点是,不能像使用数组集合
那样设置向量的源
。您甚至可以使用另一个数组中的Array.slice()
实例化一个简单的数组。我想,向量必须迭代增长。我现在有点想知道我将使用它们做什么。如果你不介意的话,贾维斯,我有几个问题:为什么数组更适合字符串,以及如何不能使用String.split()?