func getIndex<T: Equatable>(valueToFind: T) -> Int? {...}
mutating func replaceObjectWithObject<T: Equatable>(obj1: T, obj2: T) {
if let index = self.getIndex(obj1) {
self.removeAtIndex(index)
self.insert(obj2, atIndex: index) // Error here: 'T' is not convertible to 'T'
}
}
Tôi có chức năng đó giả sử thay thế một phần tử bằng phần tử khác. Nhưng Im không quen thuộc với Generics
và không biết tại sao điều này không hoạt động. Hãy giúp tôi.Swift Array.insert generics
Nếu tôi loại bỏ các Equatable từ đột biến func được thông báo lỗi nhảy vào dòng đầu tiên trong func đó và nếu tôi sau đó thay thế mà với func find()
đó mang lại cho tôi những lỗi tương tự như trên dòng 3.
bạn có thể cung cấp việc thực hiện của 'phương pháp insert', hoặc ít nhất là chữ ký của mình? – Antonio
nvm ... Tôi hiểu điều đó - đó là phần mở rộng 'Array', phải không? – Antonio
Hơi tiếp tuyến, nhưng thông báo lỗi đó gây nhầm lẫn vì 'Mảng' sử dụng T làm loại con chung của nó.Nó nói rằng 'T' (kiểu chung cho hàm này) không thể chuyển đổi thành' T' (kiểu chung cho mảng). Nếu bạn thay đổi chữ ký của phương thức để có 'U' thay vì' T', nó sẽ rõ ràng hơn. –