hack集合:Compared To Arrays
Hack集合和Arrays(数组)在某些方面是相似的,一般来说比其他数据更具体。也有一些差异。
选择
以下摘要提供了有关何时使用Hack集合与数组的一般指导。一般来说,新的Hack代码应尽可能利用集合; 但数组仍将以一流的方式得到支持。
使用array时间:
- 您正在与修改除数组之外的数组的内置函数交互array_push(), array_pop(), array_shift(), array_unshift()。
- 您正在与修改数组内部指针的内置函数进行交互 current() 和 next()。
- 您正在根据您传递参数的类型与内置函数进行交互,这些函数具有不同的行为 apc_store()。
- 您将容器传递给一个非内置函数,该函数需要array一个参数(例如在自定义框架中)。
- 你需要value semantics。
否则,集合应该非常适合您的工作流程。
语义
下表提供了数组和集合之间的一些语义差异和相似之处。
ARRAY | COLLECTION |
---|---|
array | Can be any type of collection |
array<T> | This will be similar to a Vector |
array<Tk, Tv> , where Tk is int or string | This will be similar to a Map |
array (X, Y) | This is similar to a Pair , assuming you add nothing more to the array |
Nothing built-in similar to an immutable collection | ImmVector , ImmMap , ImmSet |
Nothing built-in similar to a Set since all arrays are indexable by key and can have duplicate values | Set |
value semantics (copy of array does not reflect changes to original array) | reference semantics (copy of collection does reflect changes to original collection) |