我有一个包含通用数组的 AAA 类。由于Item可能不是 Equatable,所以我不将其编码为class AAA<Item: Equatable>
.
我想在 AAA 类中添加一个删除函数,该函数在 Item 为 Equatable 时可用。通过调用这个函数,它将调用数组扩展中的一个函数。
由于默认情况下Item不是 Equatable,因此以下代码无法编译。
class AAA<Item>
{
var items = [Item]()
func remove(item: Item)
{
items.remove(object: item)
}
}
extension Array where Element: Equatable
{
// Remove first collection element that is equal to the given `object`:
mutating func remove(object: Element)
{
if let index = index(of: object)
{
remove(at: index)
}
}
}
在下一步中,我尝试将项目和项目转换为 Equatable。但是,我找不到任何方法来检查items数组并将其转换为具有 Equatable 元素的数组。
func remove<ItemEquatable: Item> (item: ItemEquatable) where ItemEquatable: Equatable
{
items.remove(object: item)
}
有什么想法或建议吗?谢谢