dev*_*os1 94 functional-programming set-operations swift
我是否可以使用任何标准库调用来对两个数组执行set操作,或者自己实现这样的逻辑(理想情况下尽可能功能和高效)?
joe*_*son 175
是的,斯威夫特有这个Set
课程.
let array1 = ["a", "b", "c"]
let array2 = ["a", "b", "d"]
let set1:Set<String> = Set(array1)
let set2:Set<String> = Set(array2)
Run Code Online (Sandbox Code Playgroud)
Swift 3.0+可以对集合进行操作:
firstSet.union(secondSet)// Union of two sets
firstSet.intersection(secondSet)// Intersection of two sets
firstSet.symmetricDifference(secondSet)// exclusiveOr
Run Code Online (Sandbox Code Playgroud)
Swift 2.0可以计算数组参数:
set1.union(array2) // {"a", "b", "c", "d"}
set1.intersect(array2) // {"a", "b"}
set1.subtract(array2) // {"c"}
set1.exclusiveOr(array2) // {"c", "d"}
Run Code Online (Sandbox Code Playgroud)
Swift 1.2+可以在集合上计算:
set1.union(set2) // {"a", "b", "c", "d"}
set1.intersect(set2) // {"a", "b"}
set1.subtract(set2) // {"c"}
set1.exclusiveOr(set2) // {"c", "d"}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是自定义结构,则需要实现Hashable.
感谢Michael Stern对Swift 2.0更新的评论.
感谢Amjad Husseini在Hashable信息的评论中.
yoA*_*ex5 11
Swift 设置操作
例子
let a: Set = ["A", "B"]
let b: Set = ["B", "C"]
Run Code Online (Sandbox Code Playgroud)
A 和 B 的并集a.union(b)
let result = a.union(b)
var a2 = a
a2.formUnion(b)
//["A", "B", "C"]
Run Code Online (Sandbox Code Playgroud)
A 和 B 的对称差a.symmetricDifference(b)
let result = a.symmetricDifference(b)
//["A", "C"]
Run Code Online (Sandbox Code Playgroud)
差异A\Ba.subtracting(b)
let result = a.subtracting(b)
//["A"]
Run Code Online (Sandbox Code Playgroud)
A 和 B 的交集a.intersection(b)
let result = a.intersection(b)
//["B"]
Run Code Online (Sandbox Code Playgroud)
请注意,结果顺序取决于哈希函数结果
归档时间: |
|
查看次数: |
45974 次 |
最近记录: |