私は次のことを達成したいと思います。任意のインスタンスを配列から削除することができます。しかし、以下は有効なSwift 3の構文ではありません:スウィフトジェネリックはクラスインスタンスを配列から削除します
extension Array where Element: class { // error: Expected identifier for type name
mutating func remove(_ object: AnyObject) {
if let index = index(where: { $0 === object }) {
remove(at: index)
}
}
}
protocol MyProtocol: class { }
class MyClass: MyProtocol { }
var myInstance = MyClass()
var myArray: [MyProtocol] = [myInstance]
myArray.remove(myInstance)
一般的なアプローチはどのように機能しますか? MyProtocolやEquatableのジェネリック拡張を特別な場合はしたくありません。
これはすべての 'Array'インスタンスに' remove'メソッドを追加します。アスカーはこのメソッドをクラスを含む配列に制限したいと思うと思います。 – Cristik