codecamp

hack集合:Compared To Arrays

Hack集合和Arrays(数组)在某些方面是相似的,一般来说比其他数据更具体。也有一些差异。

选择

以下摘要提供了有关何时使用Hack集合与数组的一般指导。一般来说,新的Hack代码应尽可能利用集合; 但数组仍将以一流的方式得到支持。

使用array时间:

  • 您正在与修改除数组之外的数组的内置函数交互array_push(), array_pop(), array_shift(), array_unshift()
  • 您正在与修改数组内部指针的内置函数进行交互 current() 和 next()
  • 您正在根据您传递参数的类型与内置函数进行交互,这些函数具有不同的行为 apc_store()
  • 您将容器传递给一个非内置函数,该函数需要array一个参数(例如在自定义框架中)。
  • 你需要value semantics

否则,集合应该非常适合您的工作流程。

语义

下表提供了数组和集合之间的一些语义差异和相似之处。

ARRAYCOLLECTION
arrayCan be any type of collection
array<T>This will be similar to a Vector
array<Tk, Tv>, where Tk is int or stringThis 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 collectionImmVectorImmMapImmSet
Nothing built-in similar to a Set since all arrays are indexable by key and can have duplicate valuesSet
value semantics (copy of array does not reflect changes to original array)reference semantics (copy of collection does reflect changes to original collection)
hack集合:Iterating
hack集合:Examples
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }