
228
|
第
4
章
let arr2 = Array(set) // [5,2,3,1,4], perhaps
Set
是一种集合(
CollectionType
),也是个序列(
SequenceType
),这类似于数组与字典,
之前介绍的关于这两种类型的一切也都适用于
Set
。比如,
Set
有
map
实例方法;它返回
一个数组,当然,如果需要也可以将其转换回
Set
:
let set : Set = [1,2,3,4,5]
let set2 = Set(set.map {$0+1}) // {6, 5, 2, 3, 4}, perhaps
如果对集合的引用是可变的,那就有很多实例方法可供使用了。你可以通过
insert
向
集合添加对象;如果对象已经在集合中,那就什么都不会发生,但也没有问题。可以通
过
remove
方法从集合中删除指定对象并返回;它会返回包装在
Optional
中的对象,如
果对象不存在,那么该方法会返回
nil
。可以通过
removeFirst
方法删除并返回集合中
的第
1
个对象(无论第
1
个指的是什么);如果集合为空,那么应用就会崩溃,因此请
小心行事(或使用安全的
popFirst
)。
集合的相等性比较(
==
)与你期望的是一致的;如果一个集合中的每个元素都与另一个
集合中的元素相等,那么这两个集合就是相等的。
如果集合的概念让你想起了小学时学到的文氏图,那就太好了,因为集合提供的实例方
法可以让你实现当初学到的所有集合操作。参数可以是集合,也可以是序列(会被转换
为集合);比如,可以是数组、范围,甚至是字符序列: