是否有 Swift 单行代码从数组中删除元素(如果存在)并在不存在时附加它?
Is there a Swift one-liner to remove an element from an array if present and append it if not?
这是我经常遇到的结构。有什么好的方法可以在 Swift 中单行显示吗?
我可以为它写一个关于 Sequence 的扩展,但我觉得有一个 "obvious" 高阶函数/集合论技术让我望而却步。
if array.contains(element) {
array.removeObject(object: element)
}
else {
array.append(element)
}
我认为解决方案本身不一定 更好 ,这只是我每次写这篇文章时都会想到的事情。
您可以尝试使用 Set
,
var set: Set<Int> = [1, 2, 4]
if !set.insert(4).inserted {
set.remove(4)
}
我找到了集合论中让我望而却步的部分!我想要的结果是 Symmetric Difference of the two arrays and this is included in Swift's set:
var element = Set([1])
var set = Set([1, 2, 3])
set = set.symmetricDifference(element) //2, 3
set = set.symmetricDifference(element) //1, 2, 3
这是我经常遇到的结构。有什么好的方法可以在 Swift 中单行显示吗?
我可以为它写一个关于 Sequence 的扩展,但我觉得有一个 "obvious" 高阶函数/集合论技术让我望而却步。
if array.contains(element) {
array.removeObject(object: element)
}
else {
array.append(element)
}
我认为解决方案本身不一定 更好 ,这只是我每次写这篇文章时都会想到的事情。
您可以尝试使用 Set
,
var set: Set<Int> = [1, 2, 4]
if !set.insert(4).inserted {
set.remove(4)
}
我找到了集合论中让我望而却步的部分!我想要的结果是 Symmetric Difference of the two arrays and this is included in Swift's set:
var element = Set([1])
var set = Set([1, 2, 3])
set = set.symmetricDifference(element) //2, 3
set = set.symmetricDifference(element) //1, 2, 3