【发布时间】:2016-01-03 04:47:55
【问题描述】:
我正在尝试在 Swift 中为 Array 实现一个简单的扩展函数,该函数将“切换”元素 - 如果值已经在 Array 中,则应将其删除,如果没有这样的值,则应将其添加到数组。
所以我认为它应该看起来像:
extension Array {
mutating func toggle(value: Element) {
if let index = indexOf(value) {
removeAtIndex(index)
} else {
append(value)
}
}
}
此代码不会生成以下语句:“无法使用类型为 '(Element)'' 的参数列表调用 'indexOf' ”。我想,我们应该以某种方式告诉编译器“值”参数应该符合 Equatable 协议,但我该如何指定呢?
【问题讨论】:
标签: arrays swift generics swift2