codecamp

hack集合:接口

concrete Hack collection classes通常来自各种接口。实际上,具体类中的许多方法都采用和/或返回这里列出的接口。

一般工作流程将是您将构造具体类的实例,使用参数中的具体类或接口或返回类型注释,并调用具体类的方法可能返回一个接口。

每个接口方法的描述可以在API参考中找到。

核心接口

这些是允许迭代,转换(例如toVector)和操纵(例如filter)的接口。

接口描述关键方法
Traversable<T>任何可以迭代使用类似的东西foreach。一个关键是没有必要,只是价值观。N / A
KeyedTraversable<Tk, Tv>扩展 Traversable<T> 并需要一个密钥存在。N / A
Container<T>扩展 Traversable<T>,但只包括数组和Hack集合N / A
KeyedContainer<Tk, Tv>扩展 KeyedTraversable<Tk, Tv>,但只包括数组和Hack集合(除了 Set 和 ImmSet 因为他们没有钥匙)N / A
Indexish<Tk, Tv>扩展 KeyedTraversable<Tk, Tv> 并且是可以使用方括号符号索引的任何东西,除了实现的对象 ArrayAccess。通常具有键string或类型的实体int。有一个方法采取一些常见的方法Indexish 或返回 IndexishN / A
IteratorAggregate<T>扩展 Traversable<T> 并可以生产 Iterator。不由数组实现 很少直接使用。getIterator()
Iterable<T>扩展IteratorAggerate<T>并且是声明为Hack集合提供功能的方法的界面。toArray()toValuesArray()toVector()toImmVector()toSet()toImmSet()lazy()values()map<Tm>((function(T): Tm) $callback)filter((function(T): bool) $callback)zip<Tz>(Traversable<Tz> $traversable)take()takeWhile()skip()skipWhile()slice()concat()firstValue()lastValue()
KeyedIterable<Tk, Tv>扩展 Iterable<Tv> 并增加了关键功能toKeysArray()toMap()keys()lazy()take()takeWhile()skip()skipWhile()firstKey()lastKey()mapWithKey<Tm>(function(Tk, Tv): Tm $callback)filterWithKey(function(Tk, Tv): bool $callback)getIterator()map<Tm>(function(T): Tm $callback)filter(function(T): bool $callback)zip<Tz>(Traversable<Tz> $traversable)

一般收集界面

这些接口在所有集合之间保留,提供查询和添加的基本方法。

接口描述关键方法
ConstCollection<T>只读集合。所有集合都实现此接口。count()isEmpty()items()
OutputCollection<T>可变收藏。所有可变集合实现此接口。add(), addAll()
Collection<T>扩展 ConstCollection<T> 和 OutputCollection<T>。结合只读和可变集合行为。clear()

特定的收藏访问接口

所有的集合都有某种访问机制。“Getters”为不可变的集合。为可变集合添加“setters”。这些是暴露这些访问功能的接口。

接口描述关键方法
ConstIndexAccess<Tk, Tv>所有密钥集合的接口,用于访问其值。at()get()containsKey()
IndexAccess<Tk, Tv>扩展 ConstIndexAccess<Tk, Tv> 并启用可变集合来设置密钥。set()setAll()removeKey()
ConstSetAccess<Tm>所有集合的接口,以访问其值。contains()
SetAccess<Tm>扩展 ConstSetAccess<Tm> 并启用可变集以删除值。remove()
ConstMapAccess<Tk, Tv>扩展 ConstSetAccess<Tk> 和 ConstIndexAccess<Tk, Tv> 并启用对地图值的访问。N / A
MapAccess<Tk, Tv>扩展 ConstMapAccess<Tk, Tv>, SetAccess<Tk> 和 IndexAccess<Tk, Tv> 并启用可变地图设置和删除键和值。N / A

特定收集接口

每个concrete Hack collection class实现了与该类相关联的适当的接口。

接口描述关键方法
ConstSet<Tv>扩展 ConstCollection<Tv>, ConstSetAccess<Tv>, Container<Tv> 和 KeyedIterable<mixed, Tv> 并且表示只读集合。bunch.
MutableSet<Tv>扩展 ConstSet<Tv>, SetAccess 和 Collection<Tv> 并表示可变集。bunch.
ConstVector<Tv>扩展 ConstCollection<Tv>, ConstIndexAccess<int, Tv>, Indexish<int, Tv> 和 KeyedIterable<int, Tv> 并且表示只读向量(值序列)。bunch.
MutableVector<Tv>扩展 ConstVector<Tv>, IndexAccess<int, Tv> 和 Collection<Tv> 并表示可变载体。bunch.
ConstMap<Tk, Tv>延长ConstCollection<Pair<Tk, Tv>>ConstMapAccess<Tk, Tv>, Indexish<Tk, Tv> 和 KeyedIterable<Tk, Tv>并且表示键Tk到值的只读映射Tvbunch.
MutableMap<Tk, Tv>扩展 ConstMap<Tk, Tv>, MapAccess<Tk, Tv> 和 Collection<Pair<Tk, Tv>> 并表示可变图。bunch.
hack集合:语义
hack集合:classes
温馨提示
下载编程狮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; }