gpt4 book ai didi

arrays - 将任何对象作为参数的 Swift 数组的扩展函数

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:42 24 4
gpt4 key购买 nike

我正在尝试在 Swift 中为 Array 实现一个简单的扩展函数,它将“切换”元素——如果该值已经在 Array 中,则应将其删除,如果没有这样的值,则应将其添加到数组。

所以我认为它应该是这样的:

extension Array {

mutating func toggle(value: Element) {
if let index = indexOf(value) {
removeAtIndex(index)
} else {
append(value)
}
}

}

此代码不会构建说:“无法使用类型为‘(Element)’的参数列表调用‘indexOf ”。我想,我们应该以某种方式告诉编译器“值”参数应该符合 Equatable 协议(protocol),但我该如何指定呢?

最佳答案

您只需像这样使数组的通用“元素”符合“可等式”:

extension Array where Element: Equatable {

mutating func toggle(value: Element) {
if let index = indexOf(value) {
removeAtIndex(index)
} else {
append(value)
}
}

}

关于arrays - 将任何对象作为参数的 Swift 数组的扩展函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32967072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com