【发布时间】:2020-01-12 03:31:28
【问题描述】:
这是我经常遇到的一个结构。有没有一种在 Swift 中单行的好方法?
我可以为它写一个关于 Sequence 的扩展,但我觉得有一种“明显的”高阶函数/集合论技术在躲避我。
if array.contains(element) {
array.removeObject(object: element)
}
else {
array.append(element)
}
我认为解决方案本身不一定会更好,这只是我每次写这篇文章时的想法。
【问题讨论】:
-
是否可以选择使用
Set代替? -
简单的答案是不使用 Array ,尝试使用 Set 。 Set 不接受重复,因此如果已存在则不会添加。
-
一行一样:
array.contains(element) ? array.removeObject(object: element) : array.append(element) -
@Starsky,我的同事建议这样做。她给它加上了
//Technically one line ???? -
与其写最短的代码,不如写最高效的代码????而且 Swift 中没有与 NSArray 的
removeObject等价的东西。
标签: swift higher-order-functions set-theory