@@ -12,7 +12,7 @@ language: zh-cn
12
12
13
13
集合是不包含重复元素的可迭代对象。下面的通用集合表和可变集合表中概括了集合类型适用的运算。分为几类:
14
14
15
- - ** 测试型的方法:** ` contains ` ,` apply ` ,` subsetOf ` 。` contains ` 方法用于判断集合是否包含某元素。集合的 ` apply ` 方法和 ` contains ` 方法的作用相同,因此 ` set(elem) ` 等同于 ` set contains elem ` 。这意味着集合对象的名字能作为其自身是否包含某元素的测试函数。
15
+ * ** 测试型的方法:** ` contains ` ,` apply ` ,` subsetOf ` 。` contains ` 方法用于判断集合是否包含某元素。集合的 ` apply ` 方法和 ` contains ` 方法的作用相同,因此 ` set(elem) ` 等同于 ` set contains elem ` 。这意味着集合对象的名字能作为其自身是否包含某元素的测试函数。
16
16
17
17
例如
18
18
@@ -24,34 +24,34 @@ language: zh-cn
24
24
scala> fruit("potato")
25
25
res1: Boolean = false
26
26
27
- - ** 加法类型的方法:** ` + ` 和 ` ++ ` 。添加一个或多个元素到集合中,产生一个新的集合。
28
- - ** 减法类型的方法:** ` - ` 、` -- ` 。它们实现从一个集合中移除一个或多个元素,产生一个新的集合。
29
- - ** Set运算包括并集、交集和差集** 。每一种运算都存在两种书写形式:字母和符号形式。字母形式:` intersect ` 、` union ` 和 ` diff ` ,符号形式:` & ` 、` | ` 和 ` &~ ` 。事实上,` Set ` 中继承自 ` Traversable ` 的 ` ++ ` 也能被看做 ` union ` 或|的另一个别名。区别是,` ++ ` 的参数为 ` Traversable ` 对象,而 ` union ` 和 ` | ` 的参数是集合。
27
+ * ** 加法类型的方法:** ` + ` 和 ` ++ ` 。添加一个或多个元素到集合中,产生一个新的集合。
28
+ * ** 减法类型的方法:** ` - ` 、` -- ` 。它们实现从一个集合中移除一个或多个元素,产生一个新的集合。
29
+ * ** Set运算包括并集、交集和差集** 。每一种运算都存在两种书写形式:字母和符号形式。字母形式:` intersect ` 、` union ` 和 ` diff ` ,符号形式:` & ` 、` | ` 和 ` &~ ` 。事实上,` Set ` 中继承自 ` Traversable ` 的 ` ++ ` 也能被看做 ` union ` 或|的另一个别名。区别是,` ++ ` 的参数为 ` Traversable ` 对象,而 ` union ` 和 ` | ` 的参数是集合。
30
30
31
31
## Set 类的操作
32
32
33
33
| WHAT IT IS | WHAT IT DOES |
34
34
| ------------------------| --------------------------|
35
- | ** 实验代码:** | |
36
- | ` xs contains x ` | 测试 ` x ` 是否是 ` xs ` 的元素。 |
37
- | ` xs(x) ` | 与 ` xs contains x ` 相同。 |
38
- | ` xs subsetOf ys ` | 测试 ` xs ` 是否是 ` ys ` 的子集。 |
39
- | ** 加法:** | |
40
- | ` xs + x ` | 包含 ` xs ` 中所有元素以及 ` x ` 的集合。 |
41
- | ` xs + (x, y, z) ` | 包含 ` xs ` 中所有元素及附加元素的集合 |
42
- | ` xs ++ ys ` | 包含 ` xs ` 中所有元素及 ` ys ` 中所有元素的集合 |
43
- | ** 移除:** | |
44
- | ` xs - x ` | 包含 ` xs ` 中除x以外的所有元素的集合。 |
45
- | ` xs - x ` | 包含 ` xs ` 中除去给定元素以外的所有元素的集合。 |
46
- | ` xs -- ys ` | 集合内容为:` xs ` 中所有元素,去掉 ` ys ` 中所有元素后剩下的部分。 |
47
- | ` xs.empty ` | 与 ` xs ` 同类的空集合。 |
48
- | ** 二值操作:** | |
49
- | ` xs & ys ` | 集合 ` xs ` 和 ` ys ` 的交集。 |
50
- | ` xs intersect ys ` | 等同于 ` xs & ys ` 。 |
51
- | <code >xs | ; ys</code > | 集合 ` xs ` 和 ` ys ` 的并集。 |
52
- | ` xs union ys ` | 等同于 <code >xs | ; ys</code >。 |
53
- | ` xs &~ ys ` | 集合 ` xs ` 和 ` ys ` 的差集。 |
54
- | ` xs diff ys ` | 等同于 ` xs &~ ys ` 。 |
35
+ | ** 实验代码:** | |
36
+ | ` xs contains x ` | 测试 ` x ` 是否是 ` xs ` 的元素。 |
37
+ | ` xs(x) ` | 与 ` xs contains x ` 相同。 |
38
+ | ` xs subsetOf ys ` | 测试 ` xs ` 是否是 ` ys ` 的子集。 |
39
+ | ** 加法:** | |
40
+ | ` xs + x ` | 包含 ` xs ` 中所有元素以及 ` x ` 的集合。 |
41
+ | ` xs + (x, y, z) ` | 包含 ` xs ` 中所有元素及附加元素的集合 |
42
+ | ` xs ++ ys ` | 包含 ` xs ` 中所有元素及 ` ys ` 中所有元素的集合 |
43
+ | ** 移除:** | |
44
+ | ` xs - x ` | 包含 ` xs ` 中除x以外的所有元素的集合。 |
45
+ | ` xs - x ` | 包含 ` xs ` 中除去给定元素以外的所有元素的集合。 |
46
+ | ` xs -- ys ` | 集合内容为:` xs ` 中所有元素,去掉 ` ys ` 中所有元素后剩下的部分。 |
47
+ | ` xs.empty ` | 与 ` xs ` 同类的空集合。 |
48
+ | ** 二值操作:** | |
49
+ | ` xs & ys ` | 集合 ` xs ` 和 ` ys ` 的交集。 |
50
+ | ` xs intersect ys ` | 等同于 ` xs & ys ` 。 |
51
+ | <code >xs | ; ys</code > | 集合 ` xs ` 和 ` ys ` 的并集。 |
52
+ | ` xs union ys ` | 等同于 <code >xs | ; ys</code >。 |
53
+ | ` xs &~ ys ` | 集合 ` xs ` 和 ` ys ` 的差集。 |
54
+ | ` xs diff ys ` | 等同于 ` xs &~ ys ` 。 |
55
55
56
56
57
57
可变集合提供加法类方法,可以用来添加、删除或更新元素。下面对这些方法做下总结。
@@ -60,22 +60,22 @@ language: zh-cn
60
60
61
61
| WHAT IT IS | WHAT IT DOES |
62
62
| ------------------| ------------------------|
63
- | ** 加法:** | |
64
- | ` xs += x ` | 把元素 ` x ` 添加到集合 ` xs ` 中。该操作有副作用,它会返回左操作符,这里是 ` xs ` 自身。 |
65
- | ` xs += (x, y, z) ` | 添加指定的元素到集合 ` xs ` 中,并返回 ` xs ` 本身。(同样有副作用) |
66
- | ` xs ++= ys ` | 添加集合 ` ys ` 中的所有元素到集合 ` xs ` 中,并返回 ` xs ` 本身。(表达式有副作用) |
67
- | ` xs add x ` | 把元素 ` x ` 添加到集合 ` xs ` 中,如集合 ` xs ` 之前没有包含 ` x ` ,该操作返回 ` true ` ,否则返回 ` false ` 。 |
68
- | ** 移除:** | |
69
- | ` xs -= x ` | 从集合 ` xs ` 中删除元素 ` x ` ,并返回 ` xs ` 本身。(表达式有副作用) |
70
- | ` xs -= (x, y, z) ` | 从集合 ` xs ` 中删除指定的元素,并返回 ` xs ` 本身。(表达式有副作用) |
71
- | ` xs --= ys ` | 从集合 ` xs ` 中删除所有属于集合 ` ys ` 的元素,并返回 ` xs ` 本身。(表达式有副作用) |
72
- | ` xs remove x ` | 从集合 ` xs ` 中删除元素 ` x ` 。如之前 ` xs ` 中包含了 ` x ` 元素,返回 ` true ` ,否则返回 ` false ` 。 |
73
- | ` xs retain p ` | 只保留集合 ` xs ` 中满足条件 ` p ` 的元素。 |
74
- | ` xs.clear() ` | 删除集合 ` xs ` 中的所有元素。 |
75
- | ** 更新: ** | |
76
- | ` xs(x) = b ` | ( 同 ` xs.update(x, b) ` )参数 ` b ` 为布尔类型,如果值为 ` true ` 就把元素x加入集合 ` xs ` ,否则从集合 ` xs ` 中删除 ` x ` 。 |
77
- | ** 克隆:** | |
78
- | ` xs.clone ` | 产生一个与 ` xs ` 具有相同元素的可变集合。 |
63
+ | ** 加法:** | |
64
+ | ` xs += x ` | 把元素 ` x ` 添加到集合 ` xs ` 中。该操作有副作用,它会返回左操作符,这里是 ` xs ` 自身。 |
65
+ | ` xs += (x, y, z) ` | 添加指定的元素到集合 ` xs ` 中,并返回 ` xs ` 本身。(同样有副作用) |
66
+ | ` xs ++= ys ` | 添加集合 ` ys ` 中的所有元素到集合 ` xs ` 中,并返回 ` xs ` 本身。(表达式有副作用) |
67
+ | ` xs add x ` | 把元素 ` x ` 添加到集合 ` xs ` 中,如集合 ` xs ` 之前没有包含 ` x ` ,该操作返回 ` true ` ,否则返回 ` false ` 。 |
68
+ | ** 移除:** | |
69
+ | ` xs -= x ` | 从集合 ` xs ` 中删除元素 ` x ` ,并返回 ` xs ` 本身。(表达式有副作用) |
70
+ | ` xs -= (x, y, z) ` | 从集合 ` xs ` 中删除指定的元素,并返回 ` xs ` 本身。(表达式有副作用) |
71
+ | ` xs --= ys ` | 从集合 ` xs ` 中删除所有属于集合 ` ys ` 的元素,并返回 ` xs ` 本身。(表达式有副作用) |
72
+ | ` xs remove x ` | 从集合 ` xs ` 中删除元素 ` x ` 。如之前 ` xs ` 中包含了 ` x ` 元素,返回 ` true ` ,否则返回 ` false ` 。 |
73
+ | ` xs retain p ` | 只保留集合 ` xs ` 中满足条件 ` p ` 的元素。 |
74
+ | ` xs.clear() ` | 删除集合 ` xs ` 中的所有元素。 |
75
+ | ** 更新:** | |
76
+ | ` xs(x) = b ` | ( 同 ` xs.update(x, b) ` )参数 ` b ` 为布尔类型,如果值为 ` true ` 就把元素x加入集合 ` xs ` ,否则从集合 ` xs ` 中删除 ` x ` 。 |
77
+ | ** 克隆:** | |
78
+ | ` xs.clone ` | 产生一个与 ` xs ` 具有相同元素的可变集合。 |
79
79
80
80
81
81
与不变集合一样,可变集合也提供了` + ` 和` ++ ` 操作符来添加元素,` - ` 和` -- ` 用来删除元素。但是这些操作在可变集合中通常很少使用,因为这些操作都要通过集合的拷贝来实现。可变集合提供了更有效率的更新方法,` += ` 和` -= ` 。 ` s += elem ` ,添加元素elem到集合s中,并返回产生变化后的集合作为运算结果。同样的,` s -= elem ` 执行从集合s中删除元素elem的操作,并返回产生变化后的集合作为运算结果。除了` += ` 和` -= ` 之外还有从可遍历对象集合或迭代器集合中添加和删除所有元素的批量操作符` ++= ` 和` --= ` 。
0 commit comments